c - 为什么海湾合作委员会不喜欢这样?

标签 c

我正在尝试学习 C,但发现自己陷入了困境,没有提示:)

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

#define MAXLINE = 1000

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

   return 0;
}

编译时出现以下错误:

test.c:7: error: expected expression before ‘=’ token

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

这是怎么回事?

最佳答案

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

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

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

关于c - 为什么海湾合作委员会不喜欢这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1429746/

相关文章:

将 C 宏定义字符串连接到文字字符串

c - Arduino上的C语言无法解释的 “Error C141: syntax error”

c - 如何避免在c中打印ascii值?

c - 当字符串的长度大于 n 时,如何打印字符串的前 n 个字节?

c - 函数参数的 GTK+ 类型转换样式

C 中一个函数可以返回另一个函数吗?

c - 用 popen() 打开的文件没有 EOF?

c++ - 在字符串中移动一个单词,单词之间用空格作为分隔符

c - 灵活数组成员的使用无效(与其他人不同)

c - 调用 execlp() 时为 "Bad Address"