c语言有关头文件的问题

1个回答
展开全部
咨询记录 · 回答于2023-05-14
c语言有关头文件的问题
关于定义变量的问题应该是我没学好c,我一直以为要把全局变量定义或声明在头文件中。指定我在大型工程中出现重定义的错误。原因是显然的,一个供超过2个源文件引用的头文件里面定义或声明的变量会被copy多份,这样在链接的时候就会出现多重定义的错误。解决办法是在某个.c文件中定义和声明全局变量而在头文件中加extern,这样头文件就可以被多源文件引用而不会报错了。关于声明函数的问题在我没接触大型c工程时,认为在头文件中声明函数是不容置疑的正确。而且就是把在源文件中的声明照搬到头文件的那种。事实并非如此。声明函数同样会遇到问题2中的情形。被引用的头文件会被copy多次,进而产生多重声明的错误。解决办法是,如果一个头文件只会被某个源文件引用,那么可以将它直接放在头文件中,不用做修改,也不会出问题,这个同样适用于上一个问题。对于一般的情形,有一种办法是在声明函数前加static或static inline。这样就会使得函数只在引用的源文件中起作用,使其scope变成文件内可见而非全局的。加inline就是将函数直接展开,加不加要看情况。
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消