gpt4 book ai didi

C++ 警告 : anonymous type with no linkage used to declare variable

转载 作者:IT老高 更新时间:2023-10-28 23:13:10 26 4
gpt4 key购买 nike

编译 (gcc 4.6.3, ubuntu) 示例时看到此警告消息:

struct {
} a;

int main()
{
}


warning: anonymous type with no linkage used to declare variable ‘<anonymous struct> a’ with linkage [enabled by default].

GCC 没有给出这个警告。只有 G++ 可以。

添加 static 清除警告:

static struct {
} a;

我不明白它是什么意思,特别是为什么 typelinkage 相关。我认为链接取决于变量的声明位置和方式,而不取决于变量本身的类型。

最佳答案

这意味着变量 a 具有链接,例如可以在其他翻译单元中可见。但是,它的匿名类型只有内部链接(没有 [外部] 链接),因此您实际上无法访问任何其他翻译单元中的变量 a,因为您无法访问其类型。

将变量设为静态会为其提供内部链接,因此类型和变量在其他翻译单元中都不可见。

我不确定在这种情况下匿名命名空间是否会起到同样的作用(无法访问编译器来检查)。

关于C++ 警告 : anonymous type with no linkage used to declare variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17914398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com