我需要使用範圍枚舉,以便我們可以將它們作爲特定類型傳遞給我們的序列化程序。我爲Enum1
的枚舉成員給出了明確的整數值。gcc禁止警告「太小,不能保存所有值」
我已經放了兩個範圍的枚舉匹配上面的描述成一個位域從而
enum class Enum1 {
value1 = 0x0,
value2 = 0x1,
value3 = 0x2
};
enum class Enum2 {
value1 = 0x0,
value2,
value3,
// ...
value14
};
struct Example {
Enum1 value1 : 2;
Enum2 value2 : 6;
}
現在,無論我用Example
類型,我得到警告「‘例子::值1’太小,無法容納所有'Enum1'的值,以及Enum2
。請注意,對於我們已定義的值,情況並非如此,我們並不關心的所有,其值超出這些值。
在我們的構建過程中,這是一個非常嚴重的干擾 - 該項目非常龐大且複雜,我們不希望通過這些警告中的許多警告進行掃描(並且有很多)。
我看了一個GCC(G ++)標誌來禁用特定的警告。有沒有可以通過命令行傳遞的東西?理想情況下,如果可能,我會使用警告雜注在本地將其禁用。
在這一點上改變代碼結構的餘地很小,但我們可以真正使用這些虛假的警告消除。
在此先感謝。
編輯:添加標識符已更改的範圍枚舉。
如果Enum1包含的值大於3,那麼它將不適合2位 – nikniknik2016
您可以顯示「Enum1」和「Enum2」的定義嗎? – Angew
@ nikniknik2016:它不會 – jsren