去哪个网站可以做写手,二次开发客户,郴州网站建设的公司,asp网站建设流程在多文件的项目中#xff0c;我们可以发现有时会出现multiple definition of ‘xxx‘的问题。这个问题一般有以下表现和处理。
原因 #xff08;1#xff09;变量或者函数在某一个头文件中定义#xff08;不是声明#xff09;#xff0c;而这个头文件被多个源文件包含我们可以发现有时会出现multiple definition of ‘xxx‘的问题。这个问题一般有以下表现和处理。
原因 1变量或者函数在某一个头文件中定义不是声明而这个头文件被多个源文件包含导致其中的变量或者函数多次编译 2在项目中对于依赖的源文件夹中的所有.c文件都会被编译如果其中一个.c文件被另外一个.c文件include就像下面的代码一样那么就会导致被包含的那个.c文件中定义的变量和函数被两次编译从而导致重复定义。
解决方法 1针对原因1只在源文件中定义函数或者变量而在头文件中使用extern关键字对其进行声明且为了保证头文件只被编译一次使用条件编译#ifndef#define#endif具体如下
#ifndef __TEST_COMMON_H__ #define __TEST_COMMON_H__ extern int test #endif 2针对原因2详查每个.c文件的包含关系。尽量不要使用.c文件包含.c文件而使用头文件声明的方式调用另一个.c文件中的函数或者变量否则容易忘记导致重复定义。
为了防止上述问题的出现我们可以把需要用在多个源文件中的变量或函数集合到一个统一的文件中然后在头文件中进行声明在其他地方都用包含头文件的方式进行处理。