我正在努力学习C并发现自己陷入困境,没有抱怨:)
无论如何,我写了一个程序,GCC不喜欢它。以下代码不是程序,但演示了问题:
#define MAXLINE = 1000
int main()
{
int tmp = MAXLINE;
char line[MAXLINE];
return 0;
}
编译时,我收到以下错误:
test.c:7:错误:'='标记之前的预期表达式
如果我用int 1000替换符号常量MAXLINE,一切正常。
发生了什么事?
答案 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