我有一个用C为我编写的库。在库中,有一个我需要使用的变量
在foo.h(在C中)
extern mystruct foobar;
在bar.h(在C++中)
我有以下类(class)。
#include foo.h
class myfoo {
private:
mystruct foobar;
}
我想知道的是,如果我创建一个myfoo数组,是foobar的每个实例都引用相同的变量,还是每个实例都是独立于其他myfoo foobar的myfoo的唯一实例?
最佳答案
达成协议(protocol):您在foo.h
中使用foobar
的bar.h
的foo.h
变量来表示,而不是(尤其是因为foobar
仅声明myfoo
,因此定义必须在实现文件中)。相反,您要在类的范围内重新声明具有相同名称和类型的变量。
这样,适用于实例成员变量的所有常规规则。特别是,每个foobar
实例都有其自己的foo.h
实例。
如果您从bar.h
中删除了声明,则不会有任何改变:该声明与ojit_code文件完全无关。
关于c++ - 在C++中使用C头文件中的Extern变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13982868/