c++ - 如何避免重复包含头文件

标签 c++ macros declaration header-files definition

我有以下代码:

#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/

相关文章:

c++ - 使用 std::sort 对具有结构对的列表进行排序

c++ - 如何通过c++_中不同目录中的文件使用变量

c++ - Android 从 C++ 端播放原始音频

c++ - 如何提取__VA_ARGS__?

c++ - C++ typedef 语句中的 *unspecified* 是什么意思?

variables - "variable declared and not used"编译错误

objective-c - Objective-C 中的对象声明

c++ - 重用相同的规则来构建不同的目标

宏不允许定义词法变量

c - 不兼容的指针类型传入 _Generic 宏