Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!bu.edu!snorkelwacker.mit.edu!stanford.edu!leland.Stanford.EDU!dkeisen From: dkeisen@leland.Stanford.EDU (Dave Eisen) Newsgroups: comp.lang.c Subject: Re: declaring defines. Message-ID: <1991Jun16.133655.12973@leland.Stanford.EDU> Date: 16 Jun 91 13:36:55 GMT References: Organization: Sequoia Peripherals, Inc. Lines: 22 In article sven@cs.widener.edu (Sven Heinicke) writes: > >This does not work, is there any way to get something like this to compile? > >#define TRY {"look","at","this",NULL},{"and","this","too",NULL} >main() >{ > char *first[][] = {TRY}; No, not really. You can only leave the first array index blank when making an incomplete array declaration. Even though it seems that the compiler should be able to figure out that you want to declare first to be char *first[2][4], the language doesn't allow you to write char *first[][]. By the way, this has nothing to do with the preprocessor. You would have the exact same problem if it were written: char *first[][] = { {"look", "at", "this", NULL}, {"and", "this", "too", NULL} };