怎么让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,
};