#include <stdio.h>
#define A 1
#if A
printf("Csau");
#endif
int main()
{
return 0;
}
我正在尝试运行这个,但我的编译器给了我
的错误main.c:4:9:错误:预期的声明说明符或
之前的'...'string constant printf(“Csau”);
为什么这不起作用的任何建议?
P.S。在主要功能中,它可以正常工作并进行一些小修改。
编辑:无论如何我可以在主函数外显示输出吗?
答案 0 :(得分:2)
您收到此错误是因为您尝试从main(或其他函数之外)调用printf
编辑:无论如何我可以在主要功能之外显示输出吗?
没有。该程序从&#34; main&#34;的开头开始。功能。将代码置于函数之外在语法上是不正确的。即使编译器允许你这样做,代码也永远不会被执行。
答案 1 :(得分:2)
您可以在编译时输出消息:
#include <stdio.h>
#define A 1
#if A
#warning "Csau"
#endif
int main()
{
return 0;
}
在运行时,您无法在另一个函数体外打印。
答案 2 :(得分:2)
一旦经过预处理,您的代码或多或少都可以归结为:
#include <stdio.h>
printf("Csau");
int main()
{
return 0;
}
这是不正确的C.你不能在函数外调用函数。它没有意义。当您运行该程序时,系统将调用您的main
功能及其功能。
答案 3 :(得分:2)
预处理器不会在main()
之前运行(又名:执行前),但在编译之前 。实际的编译步骤将预处理的结果作为输入,因此,在您的情况下,无效的C程序,因为您不能在函数之外使用语句。
在程序运行时,输入main()
之前就没有了。当然,您的运行时可能会设置一些内容,但调用main()
之前发生的任何事情都不属于您的C程序。