2012-10-23 111 views
3

我具有以下,我想是指派在頭文件的值,以恆定結構將值分配給結構類型的常量用C

代碼:

struct madStruct { 
    uint8_t code; 
    uint8_t cluster; 
}; 
typedef struct madStruct MadStruct; 

C文件

const MadStruct madStructConst = { 
    .code = 0x00, 
    .cluster = 0x01, 
}; 

我想知道這段代碼應該做什麼?

此代碼不能在Visual Studio C++ 2010中編譯,我該如何轉換它才能在MingW和Visual Studio C++ 2010中編譯?

回答

8

的語法在C99被引入並允許成員的名稱在初始化被明確指定(在.code.cluster被稱爲指示符)。初始化將值0x00分配給code成員,並將值0x01分配給cluster成員。

VC只支持C89,所以編譯失敗。

const MadStruct madStructConst = { 0x00, 0x01 }; 

沒有成員初始化與該成員在struct定義的順序指定的值代號:由於struct只有兩個成員,都被初始化,您可以用替換的初始化。在這種情況下,code被分配爲0x00並且cluster被分配0x01,與指定者的初始化相同。

+0

感謝您的回覆,我猜測這是視覺工作室相關的事情。我最近在Visual Studio 2012發佈會上。他們增加了很多功能,但沒有改變的是編譯器!法拉利與WW甲殼蟲1945引擎! – AaA

相關問題