2012-06-28 96 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