我有以下代码:
#ifndef GOOGLESET_PHP_H
#define GOOGLESET_PHP_H
zend_class_entry *googleset_ce;
#endif /* GOOGLESET_PHP_H */
出于某种原因,如果我将此头文件包含在多个 cpp 文件中,编译器会多次提示我声明了 googleset_ce
。上面的条件宏是否足以避免这种情况?
最佳答案
你需要使用extern
关键字:
#ifndef GOOGLESET_PHP_H
#define GOOGLESET_PHP_H
extern zend_class_entry * googleset_ce;
#endif // GOOGLESET_PHP_H
否则编译器会认为您在包含此 header 的每个文件中都声明了该变量。
这是全局变量不受欢迎的原因之一。
关于c++ - 如何避免重复包含头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7881021/