0%

解决C语言变量被重复定义错误的问题

解决C语言变量被重复定义错误的问题

头文件编译的原理

  • 在每次头文件被某个.c文件include的时候,头文件头会被插入到代码中#include "xxx.h"的位置,假如在头文件中定义了变量,然后这个头文件被多个.c文件同时Include的话,就会导致头文件中的变量以同样的名称被定义多次。因此产生错误

解决方法

  • 就是在定义该变量的.c文件的头文件中(或者需要用到在其他.c文件中定义的变量的文件中)给对应的变量加extern关键字定义,此时会意味着这个变量是在其他位置被定义的,在此处仅仅是声明一下,而不是定义,也不分配内存空间。此时在该文件被其他.c文件Include的时候,就不会使得变量被定义多次。
  • 或者使用#ifndef#define XX#endif防止if块中的内容被定义多次。

其他知识点

  • C语言中两种方式使用#include命令, #include <>#include ””的区别

  • 一种是在包含指令#include后面”<>”将头文件名括起来。这种方式用于标准或系统提供的头文件,到保存系统标准头文件的位置查找头文件。

  • 另一种是在包含指令#include后用双引号””将头文件包括起来。这种方式常用与程序员自己的头文件。用这种格式时,C编译器先查找当前目录是否有指定名称的头文件,然后在从标准头文件目录中查找。