C 中的头文件可以包含变量吗?
我是编程初学者;从 C 开始,我知道精度的重要性,尤其是在学习过程的第一步
最佳答案
包含文件是由预处理器在尝试编译代码之前完成的,它只是进行文本替换 - 它将包含文件的内容放入将传递给编译器的当前单元中。然后,编译器会看到连接的输出,并且根本没有 #include
指令。
话虽如此,从技术上讲,您可以包含任何有效的 C 代码。
但是,好的做法是仅使用类型定义、#define
、函数声明(而不是定义)和数据>声明(而不是定义)应该位于标题中。函数声明也称为原型(prototype),仅指定函数签名(其返回类型、名称和参数)。数据声明看起来与数据定义非常相似,但有一个 extern
存储类说明符并且无法初始化:
extern int a; // declares "a" but does not define it
extern int a = 0; // defines "a" (initialisation requested), the extern is redundant
int a; // a tentative definition (no initialisation but "a" is zeroed)
为什么在头文件中定义函数和数据会令人不悦?因为在链接时,包含相同头文件的不同单元将定义相同的符号,并且链接器将看到某些符号的重复定义。
还要考虑到 header 是项目其余部分(世界?)的一种“公共(public)”接口(interface),并不是源文件中定义的每个函数都需要在那里有一个声明。在源文件中拥有永远不会暴露给外界的内部类型和静态
函数和数据是完全可以的。
关于C --> header 和变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34685662/