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

时间:2009-09-15 21:35:34

标签: c

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

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

#define MAXLINE = 1000

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

   return 0;
}

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

  

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

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

发生了什么事?

7 个答案:

答案 0 :(得分:21)

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

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

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

答案 1 :(得分:20)

定义不需要等号:)

#define maxline 1000

答案 2 :(得分:10)

不应该只定义

#define MAXLINE 1000

答案 3 :(得分:3)

#define语句不需要等号。

应该是:

#define MAXLINE 1000

答案 4 :(得分:3)

使用 #define 而不使用'=':

#define MAXLINE 1000

答案 5 :(得分:3)

你应该

#define MAXLINE 1000

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

答案 6 :(得分:1)

#define MAXLINE 1000