一千萬個為什麽

搜索

源代碼在GCC中編譯,但不在Visual Studio中編譯

這可以在GCC 4.6上編譯,但不適用於VS2010 sp1:
是我的錯還是VS搞砸了?

 #include "stdafx.h"

enum Attribute{red_att,black_att,key_att,value_att};

struct Color{};



template
struct Tag_Value;

template<>
struct Tag_Value
{
    typedef Color type;
};

int main()
{

    return 0;
}

Errors:
error C2599: 'Attribute' : forward declaration of enum type is not allowed

錯誤C2440:'specialization':無法從'Attribute'轉換為'Attribute'

最佳答案

假設有效且無沖突的 stdafx.h ,看起來像有效代碼。

你會發現有人告訴你,在C ++中,你不必說 enum Namestruct Name ,如果沒有隱藏 Name (如一個名為 Name 的函數。在C中你必須這樣做,因為C有一個不同的概念來查找名字。但是在C ++中,要引用struct,class,union或enum,您只需使用 Name 即可。因此,您可以使用 Attribute 而不是枚舉屬性。但命名類型的不同選擇不應該使編譯器拒絕您的代碼。

轉載註明原文: 源代碼在GCC中編譯,但不在Visual Studio中編譯