#include <stdio.h>
#define TEST 1;
int main(int argc, const char *argv[])
{
int array[] = { TEST };
printf("%d\n", array[0]);
return 0;
}
编译器抱怨:
test.c: In function ‘main’:
test.c:7: error: expected ‘}’ before ‘;’ token
make: *** [test] Error 1
#include <stdio.h>
#define TEST 1;
void print_arg(int arg)
{
printf("%d", arg);
}
int main(int argc, const char *argv[])
{
print_arg(TEST);
return 0;
}
编译器抱怨:
test.c: In function ‘main’:
test.c:12: error: expected ‘)’ before ‘;’ token
make: *** [test] Error 1
如何解决这两个问题?我认为 C 只是在源文件上进行搜索和替换,将TEST
替换为1
,不是吗?
答案 0 :(得分:8)
问题是因为#define TEST 1;
中有分号。
有了这个,该程序转换为:
int array[] = { 1; }; /*this is illegal!*/
补救措施:删除它,使其看起来像:
#define TEST 1
转换为:
int array[] = {1}; /*legal*/
答案 1 :(得分:5)
删除;在定义之后。
#define TEST 1