我正在尝试用C做一些项目.
我想知道是否有可能#include从同一个文件制作两次,以回忆钻石遗产的方式.
即
#include "a.h"#include "b.h"#include "a.h"是否有可能#include "b.h"在交流?
我收到一个错误:
some_variable already defined in a.obj
Run Code Online (Sandbox Code Playgroud)
简单:不要在头文件中定义变量,只需声明它们:
标题:
// a.h
#ifndef A_H // always use #include guards
#define A_H
extern int my_variable; // declare my_variable
...
#endif
Run Code Online (Sandbox Code Playgroud)
源文件ac:
// a.c
#include "a.h"
int my_variable; // define my_variable
...
Run Code Online (Sandbox Code Playgroud)
源文件bc:
// a.c
#include "a.h"
#include "b.h"
...
Run Code Online (Sandbox Code Playgroud)
正如其他人所提到的,#include guards很有用,也是一个很好的习惯,但它们可能不是解决这个特定问题的方法.