如何避免重复包含头文件

问题描述 投票:3回答:6

我有以下代码:

#ifndef GOOGLESET_PHP_H
#define GOOGLESET_PHP_H 
zend_class_entry *googleset_ce;
#endif /* GOOGLESET_PHP_H */

由于某种原因,如果我将此头文件包含在多个cpp文件中,编译器会大声喊我声明googleset_ce不止一次。上面的条件宏不足以避免这种情况吗?

c++ macros declaration header-files definition
6个回答
7
投票

您需要使用extern关键字:


5
投票

是,但是您只声明了一次[每个编译单元


1
投票

请注意,这是一个链接器


0
投票

如果标头包含在多个.c / .cpp文件中,那么实际上它可能已在多个.obj文件中声明。您必须将其封装在名称空间或类中,因此对于包含它的每个.cpp文件,它都不被视为全局变量。


0
投票

lurscher有答案。如果要在.cpp文件之间共享同一全局变量,一种方法是在一个.cpp文件中全局声明它,然后在头文件中将其声明为extern。


0
投票

而不是使用“ #ifndef GOOGLESET_PHP_H

© www.soinside.com 2019 - 2024. All rights reserved.