2014-10-09 45 views
1

我試圖做這樣的事情在我的C程序:是否有可以處理C內聯結構的MSVC版本?

struct MyColor 
{ 
    int Color; 
}; 

struct MyColor* RandomizeColor(struct MyColor* self) 
{ 
    return self; 
} 

int main() 
{ 
    struct MyColor* Color = RandomizeColor(&((struct MyColor){0})); 

    return 0; 
} 

但MSVC++ 2010速成給了我一個「這裏不允許類型名稱」。有沒有其他版本可以做到這一點?或者我最好使用另一個編譯器?謝謝。

回答

3

您嘗試使用的功能稱爲複合文字。複合文字是C99功能。 MSVC包中的C編譯器是過時的C89/90編譯器,它不支持C99。

你將不得不使用命名對象,以使你的代碼編譯MSVC的C編譯器

struct MyColor temp = { 0 }; 
struct MyColor* Color = RandomizeColor(&temp); 

或者,您可以切換到支持C99另一個編譯器。

+0

我更新到MS Visual Studio 2013,它支持複合文字,它將正確編譯我的代碼。 – 2014-10-10 05:07:14

相關問題