我已经用过#pragma
函数内的指令没有错误或警告(特别是#pragma pack()
).但是下面的代码显示了警告incompatible implicit declaration of built-in function 'printf'|
:
int main(void)
{
printf("Trial");
}
#include<stdio.h>
此外,这是我所拥有的一本书的摘录。作者对 SO 有不好的评论,尤其是他慷慨地使用了void main()
,但我仍然觉得没有一个作者可以that无缘无故地提出以下主张是不好的:
每个预处理器指令均以 # 开头
象征。这些指令可以放置在程序中的任何位置,但是
最常放置在程序的开头、之前
第一个函数定义。
那么你能告诉我是否强制使用一些预处理器指令,例如#include
在程序的顶部,而其他人则喜欢#pragma
可以在程序的任何地方使用吗?
Edit After OUAH的评论我尝试了以下操作,但它没有发出警告,它给出了一大堆errors.LOL.
int main(void)
{
#include<stdio.h>
printf("Trial");
}
这样想吧。包含文件的内容只需插入到文件中 #include 指令出现的位置即可。生成的代码在语法上对于您所使用的编程语言来说必须是正确的。
考虑以下文件:
int a;
int foo();
int main()
#include "myheader.h"
int foo()
{
return 0;
}
文件 myheader.h 包含:
{
return foo();
}
预处理器处理完 #include 指令后,编译器将看到的代码是:
int a;
int foo();
int main()
{
return foo();
}
int foo()
{
return 0;
}
这是有效的 C 语法。不建议这样使用 #include 指令,但它可以让您了解它的含义。如果 myheader.h 文件具有以下内容:
this is some garbage
which is not proper C
那么生成的代码将是:
int a;
int foo();
int main()
this is some garbage
which is not proper C
int foo()
{
return 0;
}
您可以在文件中的任何位置使用#include。它会导致此时按字面包含所包含文件的内容。您在代码中收到 printf() 未声明消息的原因是 C 要求在使用之前声明一个函数,而 stdio.h 具有该声明。这就是为什么在使用之前需要它。为什么它不能包含在后一个示例中的 main() 中,是因为在包含(扩展)时,它会导致语法错误的 C 代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)