Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | James Kuyper <jameskuyper@verizon.net> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Limitations and workarounds to expressions defining size of an array |
| Date | 2012-09-05 07:17 -0400 |
| Organization | A noiseless patient Spider |
| Message-ID | <k27cbh$ev6$1@dont-email.me> (permalink) |
| References | <504636db$0$1709$426a74cc@news.free.fr> <504643A0.1050007@verizon.net> <5046faab$0$2355$426a74cc@news.free.fr> |
On 09/05/2012 03:09 AM, Francois Grieu wrote: > On 04/09/2012 20:08, James Kuyper wrote: >> On 09/04/2012 01:14 PM, Francois Grieu wrote: ... > Yes; also relevant is 6.6p6 > An integer constant expression (.. used to specify .. the size of an > array ..) shall have integer type and shall only have operands > that are integer constants, enumeration constants, character > constants, sizeof expressions whose results are integer constants, > and floating constants that are the immediate operands of casts. > Cast operators in an integer constant expression shall only > convert arithmetic types to integer types, except as part of an > operand to the sizeof operator. > > I read that as C99 NOT allowing (except in automatic context, as a > VLA) even basic use of floating point as in > > struct foo * bar[(unsigned)(1000*2.718)]; That is correct. Which is why, if you want to do this, it will have to be an array with automatic storage duration. Does it need to have static storage duration? ... > I was hoping for (not tested) > > // select temporary type > #include <limits.h> > #ifdef ULLONG_MAX > #define UTMP static const unsigned long long > #else > #define UTMP static const unsigned long > #endif I'd recommend using a typedef rather than #define for that purpose. If you do use a typedef, you should also change the name, since fully-capitalized names are, by convention, used mainly for macros. > #define EXPECTED 15000 > UTMP kExpected = EXPECTED; > UTMP kRoot2 = 12*12*Expected; > // we want ceil(sqrt(12*12*Expected)), use Newton/Rapson > UTMP kExTmp0 = (uwl)3<<(kRoot2>>30 > 0 ? 15 : > kRoot2>>24 > 0 ? 12 : > kRoot2>>18 > 0 ? 9 : > kRoot2>>12 > 0 ? 6 : 3); > UTMP kExTmp1 = (kExTmp0+kRoot2/kExTmp0)/2; > UTMP kExTmp2 = (kExTmp1+kRoot2/kExTmp1)/2; > UTMP kExTmp3 = (kExTmp2+kRoot2/kExTmp2)/2; > UTMP kExTmp4 = (kExTmp3+kRoot2/kExTmp3)/2; > UTMP kExTmp5 = (kExTmp4+kRoot2/kExTmp4)/2; > UTMP kExTmp6 = (kExTmp5+kRoot2/kExTmp5)/2; > UTMP kExTmp7 = (kExTmp6+kRoot2/kExTmp6)/2; > UTMP kExTmp8 = (kExTmp7+kRoot2/kExTmp7)/2; > UTMP kExTmp9 = (kExTmp8+kRoot2/kExTmp8)/2; > UTMP kExTmpA = (kExTmp9+kRoot2/kExTmp9)/2; > UTMP kExTmpB = (kExTmpA+kRoot2/kExTmpA)/2; > UTMP kExTmpC = (kExTmpB+kRoot2/kExTmpB)/2; > UTMP kRoot = kExTmpC+(kExTmpB>kExTmpC?1:0); > > struct foo * bar[kExpected+kRoot]; > > Is that valid in C11? I don't see any problems. Did you have any particular reason for doubting that it was valid? If so, you might be right - I'm far less reliable when I say "I see no problems" than when I say "I see a problem". -- James Kuyper
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Limitations and workarounds to expressions defining size of an array Francois Grieu <fgrieu@gmail.com> - 2012-09-04 19:14 +0200
Re: Limitations and workarounds to expressions defining size of an array James Kuyper <jameskuyper@verizon.net> - 2012-09-04 14:08 -0400
Re: Limitations and workarounds to expressions defining size of an array Francois Grieu <fgrieu@gmail.com> - 2012-09-05 09:56 +0200
Re: Limitations and workarounds to expressions defining size of an array James Kuyper <jameskuyper@verizon.net> - 2012-09-05 07:33 -0400
Re: Limitations and workarounds to expressions defining size of an array Francois Grieu <fgrieu@gmail.com> - 2012-09-05 23:39 +0200
Re: Limitations and workarounds to expressions defining size of an array Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-09-05 18:11 -0400
Re: Limitations and workarounds to expressions defining size of an array James Kuyper <jameskuyper@verizon.net> - 2012-09-05 07:17 -0400
Re: Limitations and workarounds to expressions defining size of an array Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-09-04 19:18 +0100
Re: Limitations and workarounds to expressions defining size of an array Kaz Kylheku <kaz@kylheku.com> - 2012-09-04 18:41 +0000
Re: Limitations and workarounds to expressions defining size of an array "BartC" <bc@freeuk.com> - 2012-09-04 20:22 +0100
Re: Limitations and workarounds to expressions defining size of an array Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-09-04 17:07 -0400
Re: Limitations and workarounds to expressions defining size of an array James Kuyper <jameskuyper@verizon.net> - 2012-09-04 17:25 -0400
Re: Limitations and workarounds to expressions defining size of an array Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-09-04 18:24 -0400
Re: Limitations and workarounds to expressions defining size of an array Keith Thompson <kst-u@mib.org> - 2012-09-04 17:29 -0700
Re: Limitations and workarounds to expressions defining size of an array army1987 <army1987@ask-for-it.invalid> - 2012-09-04 21:26 +0000
Re: Limitations and workarounds to expressions defining size of an array army1987 <army1987@ask-for-it.invalid> - 2012-09-04 21:31 +0000
Re: Limitations and workarounds to expressions defining size of an array James Kuyper <jameskuyper@verizon.net> - 2012-09-04 17:41 -0400
Re: Limitations and workarounds to expressions defining size of an array army1987 <army1987@ask-for-it.invalid> - 2012-09-05 20:45 +0000
Re: Limitations and workarounds to expressions defining size of an array James Kuyper <jameskuyper@verizon.net> - 2012-09-05 17:23 -0400
Re: Limitations and workarounds to expressions defining size of an array army1987 <army1987@ask-for-it.invalid> - 2012-09-05 21:30 +0000
Re: Limitations and workarounds to expressions defining size of an array Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-09-05 23:04 +0100
Re: Limitations and workarounds to expressions defining size of an array Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-09-05 18:17 -0400
Re: Limitations and workarounds to expressions defining size of an array James Kuyper <jameskuyper@verizon.net> - 2012-09-05 18:29 -0400
Re: Limitations and workarounds to expressions defining size of an array Kaz Kylheku <kaz@kylheku.com> - 2012-09-04 21:44 +0000
Re: Limitations and workarounds to expressions defining size of an array Kaz Kylheku <kaz@kylheku.com> - 2012-09-04 21:39 +0000
Re: Limitations and workarounds to expressions defining size of an array "BartC" <bc@freeuk.com> - 2012-09-04 22:58 +0100
Re: Limitations and workarounds to expressions defining size of an array Kaz Kylheku <kaz@kylheku.com> - 2012-09-04 22:12 +0000
Re: Limitations and workarounds to expressions defining size of an array Lowell Gilbert <lgusenet@be-well.ilk.org> - 2012-09-04 18:55 -0400
Re: Limitations and workarounds to expressions defining size of an array Keith Thompson <kst-u@mib.org> - 2012-09-04 16:51 -0700
Re: Limitations and workarounds to expressions defining size of an array Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-09-04 20:58 -0400
Re: Limitations and workarounds to expressions defining size of an array Francois Grieu <fgrieu@gmail.com> - 2012-09-05 10:04 +0200
Re: Limitations and workarounds to expressions defining size of an array Tim Rentsch <txr@alumni.caltech.edu> - 2012-09-07 04:47 -0700
Re: Limitations and workarounds to expressions defining size of an array Keith Thompson <kst-u@mib.org> - 2012-09-07 14:04 -0700
Re: Limitations and workarounds to expressions defining size of an array Casey Carter <casey_at_carter_dot_net@nospam.invalid> - 2012-09-07 16:40 -0500
Re: Limitations and workarounds to expressions defining size of an array Tim Rentsch <txr@alumni.caltech.edu> - 2012-09-07 19:54 -0700
Re: Limitations and workarounds to expressions defining size of an array Keith Thompson <kst-u@mib.org> - 2012-09-08 14:15 -0700
Re: Limitations and workarounds to expressions defining size of an array lawrence.jones@siemens.com - 2012-09-17 12:09 -0400
Re: Limitations and workarounds to expressions defining size of an array Tim Rentsch <txr@alumni.caltech.edu> - 2012-09-07 04:53 -0700
Re: Limitations and workarounds to expressions defining size of an array "BartC" <bc@freeuk.com> - 2012-09-07 13:07 +0100
Re: Limitations and workarounds to expressions defining size of an array Keith Thompson <kst-u@mib.org> - 2012-09-07 14:08 -0700
Re: Limitations and workarounds to expressions defining size of an array Tim Rentsch <txr@alumni.caltech.edu> - 2012-09-07 19:41 -0700
Re: Limitations and workarounds to expressions defining size of an array "BartC" <bc@freeuk.com> - 2012-09-04 20:26 +0100
Re: Limitations and workarounds to expressions defining size of an array Barry Schwarz <schwarzb@dqel.com> - 2012-09-04 14:14 -0700
Re: Limitations and workarounds to expressions defining size of an array Tim Rentsch <txr@alumni.caltech.edu> - 2012-09-07 04:41 -0700
Re: Limitations and workarounds to expressions defining size of an array army1987 <army1987@ask-for-it.invalid> - 2012-09-07 13:32 +0000
csiph-web