c - 定义和声明应该匹配吗?

标签 c

在我的 .h 文件中,我有

extern int a[4];

在我的 .c 文件中

int a[10];

那么这有什么问题吗?

声明和定义的大小很重要吗?不对吗?

如果我在其中一个文件中写入 sizeof(a) ,输出将会是什么? 这是未定义的行为吗?

最佳答案

如果您在源文件中包含头文件,则 a 的两个声明必须具有与 C 相同的类型:

(C11, 6.7p4) "All declarations in the same scope that refer to the same object or function shall specify compatible types."

即使两个声明位于两个翻译单元中,它们也需要具有相同类型:

(C11, 6.2.7p2) "All declarations that refer to the same object or function shall have compatible type; otherwise, the behavior is undefined."

关于c - 定义和声明应该匹配吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31471324/

相关文章:

C++ : how can I fourier transform an array into an other array of different size using fftw3

c - 我声明的结构中缺少什么

c - 两个 4 位数字相加后的结转总和

c - 为什么我在 Raspberry-Pi Jessie Lite 上启动时无法访问标准输入?

c - Memcpy 拷贝比预期多

c - 如何在C中通过argv[1]进行索引?

c - MS C++ 禁用函数重新排序

c - 无效读取大小 4 错误 C 编程

c - 在解析 HTML/XML 中的标签时,我想为 '<' 初始化 strtok,但有时我只需要处理原始文本

c - -1 是一个有效的指针地址吗