[Toybox] Any language lawyers here?

Daniel Walter d.walter at 0x90.at
Wed Feb 22 07:36:15 PST 2012


On Wed, Feb 22, 2012 at 07:35:22AM -0600, Rob Landley wrote:
> I'm arguing with C:
> 
> If I do the equivalent of:
> 
> extern int blah[] = {0,1,2,3,4};
> 
> int main(int argc, char *argv[])
> {
>   printf("sizeof(blah)=%d\n", (int)sizeof(blah));
>   return 0;
> }
> 
> I get:
> 
> temp.c:3: warning: ?blah? initialized and declared ?extern?
> 
> But if I just have extern into blah[] without the initialization, I get:
> 
> temp.c: In function ?main?:
> temp.c:7: error: invalid application of ?sizeof? to incomplete type ?int[]?
> 
> The second of which at least makes sense.  The first is just stupid. I
> want to have one common instance of the kill signal list, _and_ I want
> various things to be aware how big the size of the thing is, and the
> compiler's determined to give me a warning for doing something which I
> _believe_ the language allows...
> 
> Is there some kind of "yes I know what I'm doing, shut up gcc"
> annotation I can put on that line without having to hardwire in a
> constant and maintain it by hand?  (I want to make the extern a #define
> which lib/lib.c can set to semicolon or something, and everybody else
> can have as "extern"...)
> 
> Rob
hi,

Why don't you put the array into a header-file ?

eg:
temp.c

#include "temp.h"

int
main (void)
{
   printf("sizeof(blah)=%d\n", (int)sizeof(blah));
   return 0;
}

temp.h
static const int blah = {1,2,3,4,5,6}; 

> _______________________________________________
> Toybox mailing list
> Toybox at lists.landley.net
> http://lists.landley.net/listinfo.cgi/toybox-landley.net

 1329924975.0


More information about the Toybox mailing list