簡體   English   中英

g ++ C ++ 0x枚舉類編譯器警告

[英]g++ C++0x enum class Compiler Warnings

我已經重構我的C ++類型安全的偽枚舉的烏七八糟新的C ++ 0x類型安全的枚舉,因為他們的方式更具有可讀性。 無論如何,我在導出的類中使用它們,所以我明確地將它們標記為要導出:

enum class  __attribute__((visibility("default"))) MyEnum : unsigned int
{
    One = 1,
    Two = 2
};

用g ++編譯它會產生以下警告:

在已定義類型后忽略類型屬性

這看起來很奇怪,因為據我所知,這個警告是為了防止實際的錯誤,例如:

class __attribute__((visibility("default"))) MyClass { };
class __attribute__((visibility("hidden")))  MyClass;

當然,我顯然沒有這樣做,因為我只在enum class的定義中標記了可見性屬性,我沒有在其他任何地方重新定義或聲明它(我可以用單個文件復制此錯誤) 。

最終,我不能讓這些代碼實際上導致問題,除了這樣的事實,如果我更改一個值並重新編譯消費者而不重新編譯共享庫,則消費者傳遞新值和共享圖書館不知道如何處理它們(雖然我不希望它首先起作用)。

我是不是太迂腐了? 這可以安全地忽略嗎? 我懷疑是這樣,但同時,有這個錯誤阻止我編譯Werror ,這讓我感到不舒服。 我真的希望看到這個問題消失。

它通過以下方式使用g ++ 4.8.2對我有用:

enum class MyEnum : unsigned int
__attribute__((visibility("default")))
{
    One = 1,
    Two = 2
};

(更改attribute聲明的位置)

您可以傳遞-Wno-attributes標志以關閉警告。

(這可能是gcc中的一個錯誤?)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM