在main函数之前显示使用预处理器时出错

时间:2018-05-04 16:07:20

标签: c

#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。在主要功能中,它可以正常工作并进行一些小修改。

编辑:无论如何我可以在主函数外显示输出吗?

4 个答案:

答案 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程序