怎么让C99在windows下编译过却不影响原有功能
如何让C99在windows下编译过却不影响原有功能。
小弟最近在做一个把linux代码移植到Windows下的工作,但原本的代码很多C99的规范语法。
比如这个:
enum {
SPICE_MSG_CURSOR_INIT = 101,
SPICE_MSG_CURSOR_RESET,
SPICE_MSG_CURSOR_SET,
SPICE_MSG_CURSOR_MOVE,
SPICE_MSG_CURSOR_HIDE,
SPICE_MSG_CURSOR_TRAIL,
SPICE_MSG_CURSOR_INVAL_ONE,
SPICE_MSG_CURSOR_INVAL_ALL,
SPICE_MSG_END_CURSOR
};
static const spice_msg_handler cursor_handlers[] = {
[ SPICE_MSG_CURSOR_INIT ] = cursor_handle_init,
[ SPICE_MSG_CURSOR_RESET ] = cursor_handle_reset,
[ SPICE_MSG_CURSOR_SET ] = cursor_handle_set,
[ SPICE_MSG_CURSOR_MOVE ] = cursor_handle_move,
[ SPICE_MSG_CURSOR_HIDE ] = cursor_handle_hide,
[ SPICE_MSG_CURSOR_TRAIL ] = cursor_handle_trail,
[ SPICE_MSG_CURSOR_INVAL_ONE ] = cursor_handle_inval_one,
[ SPICE_MSG_CURSOR_INVAL_ALL ] = cursor_handle_inval_all,
};
这个在vs2008下就会编译出错,各位大大指点下,如何更改却不影响原本功能?
------解决方案--------------------
不好意思,走眼了。
的确,这样就不能用const了。
如果一定要const,那么
static const spice_msg_handler cursor_handlers[] = {
NULL,
NULL,
NULL,
... // 一共101个NULL
cursor_handle_init,
cursor_handle_reset,
cursor_handle_set,
cursor_handle_move,
cursor_handle_hide,
cursor_handle_trail,
cursor_handle_inval_one,
cursor_handle_inval_all, // 这里handler的顺序要和enum的顺序一致
NULL,
};
小弟最近在做一个把linux代码移植到Windows下的工作,但原本的代码很多C99的规范语法。
比如这个:
enum {
SPICE_MSG_CURSOR_INIT = 101,
SPICE_MSG_CURSOR_RESET,
SPICE_MSG_CURSOR_SET,
SPICE_MSG_CURSOR_MOVE,
SPICE_MSG_CURSOR_HIDE,
SPICE_MSG_CURSOR_TRAIL,
SPICE_MSG_CURSOR_INVAL_ONE,
SPICE_MSG_CURSOR_INVAL_ALL,
SPICE_MSG_END_CURSOR
};
static const spice_msg_handler cursor_handlers[] = {
[ SPICE_MSG_CURSOR_INIT ] = cursor_handle_init,
[ SPICE_MSG_CURSOR_RESET ] = cursor_handle_reset,
[ SPICE_MSG_CURSOR_SET ] = cursor_handle_set,
[ SPICE_MSG_CURSOR_MOVE ] = cursor_handle_move,
[ SPICE_MSG_CURSOR_HIDE ] = cursor_handle_hide,
[ SPICE_MSG_CURSOR_TRAIL ] = cursor_handle_trail,
[ SPICE_MSG_CURSOR_INVAL_ONE ] = cursor_handle_inval_one,
[ SPICE_MSG_CURSOR_INVAL_ALL ] = cursor_handle_inval_all,
};
这个在vs2008下就会编译出错,各位大大指点下,如何更改却不影响原本功能?
------解决方案--------------------
不好意思,走眼了。
的确,这样就不能用const了。
如果一定要const,那么
static const spice_msg_handler cursor_handlers[] = {
NULL,
NULL,
NULL,
... // 一共101个NULL
cursor_handle_init,
cursor_handle_reset,
cursor_handle_set,
cursor_handle_move,
cursor_handle_hide,
cursor_handle_trail,
cursor_handle_inval_one,
cursor_handle_inval_all, // 这里handler的顺序要和enum的顺序一致
NULL,
};