c - 头文件中数组的生命周期
问题描述
我想在头文件中定义一个数组,以及使用它的函数。不在函数内部,而是在顶部,就像一个全局变量。
现在我不确定这是否会起作用。阵列能存活多久?是像在循环中创建一个局部变量一样,还是在程序结束之前 #include "said_header.h" 会一直保持活动状态?
解决方案
请记住,#include "headerfile.h"
在 C 语言中,在逻辑上或多或少等同于打开文本编辑器并将该#include
行替换为包含文件的全部内容。
因此,头文件最好用于声明(需要在不同的源文件之间共享,也就是编译单元),而定义最好只保存在一个源文件中。请注意,您可以先声明一个对象,然后再定义它,实际上,当声明位于头文件中时这样做是允许编译器验证声明和定义是否匹配的好方法。
所以headerfile.h
你可以把你的数组声明:
extern char array[100];
并且在您的源文件之一中,您可以定义您的数组:
#include "headerfile.h"
char array[100];
在其他源文件中,您可以只引用全局数组:
#include "headerfile.h"
strncpy(array, "some string", sizeof(array) - 1);