繁体   English   中英

为什么海湾合作委员会不这样?

[英]Why doesn't GCC like this?

我正在努力学习C并发现自己陷入困境,没有抱怨:)

无论如何,我写了一个程序,GCC不喜欢它。 以下代码不是程序,但演示了问题:

#define MAXLINE = 1000

int main()
{
   int tmp = MAXLINE;
   char line[MAXLINE];

   return 0;
}

编译时,我收到以下错误:

test.c:7:错误:'='标记之前的预期表达式

如果我用int 1000替换符号常量MAXLINE,一切正常。

到底是怎么回事?

当预处理器替换MAXLINE的定义时,您的代码将更改为

int main()
{
   int tmp = = 1000;
   char line[= 1000];
   return 0;
}

C预处理器非常笨! 不要在#defines中添加任何额外内容(不等于,没有分号,没有任何内容)

定义不需要等号:)

#define maxline 1000

不应该只定义=

#define MAXLINE 1000

#define语句不需要等号。

它应该是:

#define MAXLINE 1000

使用#define而不是'=':

#define MAXLINE 1000

你应该有

#define MAXLINE 1000

你可以在这里阅读更多http://gcc.gnu.org/onlinedocs/cpp/Object_002dlike-Macros.html#Object_002dlike-Macros

#define MAXLINE 1000

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM