2012-06-28 35 views
1

我將一些(工作)代碼從Linux移植到Windows 8.我正在使用DDK。從Linux移植到Windows 8:結構成員名稱

typedef struct { 
    unsigned int test1; 
    unsigned int test2; 
} settings; 

const settings vp_settings = { 
    .test1 = 1, 
    .test2 = 1 
}; 

Windows DDK編譯器和GCC使得這個失效有什麼不同?我得到的錯誤,假設typedef struct {是1號線和編號繼續正常進行:

(7) : error: C2059: syntax error : '.'

我怎麼能寫這樣的方式,將有沒有語法錯誤?我想保留相同的成員名稱,所以我不需要更改其餘的代碼庫。這段時間是多餘的,可以刪除嗎?

回答

2

問:這有什麼錯(香草):

const settings vp_settings = { 
    1, /* test1 */ 
    1 /* test2 */ 
}; 

PS:

How to rewrite C-struct designated initializers to C89 (resp MSVC C compiler)

這看起來像一個C99的事......據我所知,並不會MSVS不完全 C99支持...

+0

想必這個代碼大大簡化了...... :) – sarnold

+0

@sarnold - 我明白了。我的觀點是,微軟從來沒有被指責支持最新/最好的開放標準,並且最好的方法可能是,正如上面的鏈接所暗示的,「只需刪除字段名稱標籤」。恕我直言... – paulsm4

+1

傻我期待他們實施一個整潔的功能只有13年後,它已被指定。 :) – sarnold