C --> header 和变量

标签 c variables header

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/

相关文章:

C:函数传递数组输入

c - 数组函数导致另一个数组的值发生变化

string - Bash,连接 2 个字符串以引用第三个变量

php - 如何在 PHP 文件中使用 etags?

c - 无法以二进制方式从文件中读取数据,C语言

c++ - 可变长度的无锁队列?

Java静态变量和局部变量

jquery - 根据元素数量更改点击变量 - jQuery

windows - 如果我尝试将 header 编译为没有换行符的包含,为什么 MSVC++ 会给我一个错误? (C++/Windows )

c++ - header 包含顺序困惑