请帮帮我~ :)
在visual studio上代码编译成功。但是,Under 代码无法在 linux、g++ 上编译。
代码..
啊啊
struct Test { Test(); ~Test(); };
B.h
extern struct Test { Test(); ~Test(); };
A.cpp
#include "A.h"
Test::Test()
{
cout << "Construction" << endl;
}
Test::~Test()
{
cout << "Destruction" << endl;
}
B.cpp
#include "B.h"
strcut A_Test : Test { A_Test(); ~A_Test(); };
当我在 linux 上编译代码时。我在描述中遇到错误。
“只能为对象和函数指定一个存储类”
这段代码在 linux 上有什么问题?
谢谢大家,请理解我的傻瓜英语。
最佳答案
Test
是一种数据类型,因此您不需要使用 extern
。正如错误消息所说,extern
仅适用于函数和对象。如果 Visual Studio 允许编译您的代码,那么这是编译器中的“错误”。
extern
的意义在于告诉编译器不要担心它看不到的函数和对象,因为它们已经在别处定义(这些将由链接器解析)。这对数据类型没有意义;编译器需要知道数据类型以生成正确的目标代码。
关于c++ - 如何在结构上使用 extern 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4180626/