新手问题。
我想让libcork用VS2010编译。
在C中,我猜你通常必须在函数的开头声明变量,如下所示:
void
cork_hash_table_clear(struct cork_hash_table *table)
{
DEBUG("(clear) Removing all entries");
size_t i; // <--- fails to compile unless moved before DEBUG.
...
但是libcork充斥着定义/声明,因为它们在代码中使用。我想知道是否有一个VS编译器选项允许这个?我很抱歉,如果这个问题不是新问题,但我得到的只是一个语法错误,我没有任何有用的术语来搜索VS文档。
答案 0 :(得分:2)
函数中的混合声明和语句被引入到the 1999 version of the standard (C99)中的C中;不幸的是,VS决定不遵循1990年版以后的标准。
您可以将代码编译为C ++,尽管这可能会以有趣的方式破解,因为C不是C ++的严格子集。如果代码与C ++不兼容,Herb Sutter recommends使用Intel CC或gcc。
问题Visual Studio support for new C / C++ standards?有一些有趣的内容,虽然它也涵盖了C ++(VS在跟上节奏方面要好得多)。