c++ - 如何在结构上使用 extern 关键字

标签 c++ linux extern

请帮帮我~ :)

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

相关文章:

c++ - 如何使用来自 c++ stdl 的 <chrono> 将 steady_clock 时间格式化为 HH :MM:SS. 毫秒?

c - c中的pthread队列

linux - 忽略 linux 管道中的错误

C:头文件中 'extern'有什么用?

c++ - extern 关键字真的有必要吗?

c++ - C++ 中的小数位和 Pow 函数

c++ - glm::vec2 不允许操作

c++ - 当字符包含表情符号时如何比较字符?

linux -/usr/bin/bash : No such file or directory

c - 如何使宏常量在 C 中可全局访问?