1

新手问题。

我正在尝试让libcork与 VS2010 一起编译。

在 CI 猜测中,您通常必须在函数的开头声明变量,如下所示:

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 文档。

4

1 回答 1

2

在1999 年版本的标准 (C99)中,函数内的混合声明和语句被引入到 C 中;不幸的是,VS 决定不再遵循 1990 版本之后的标准。

您可以将代码编译为 C++,尽管这很可能会以有趣的方式破坏,因为 C 不是 C++ 的严格子集。如果代码与 C++ 不兼容,Herb Sutter建议使用 Intel CC 或 gcc。

问题Visual Studio 是否支持新的 C/C++ 标准?有一些有趣的内容,尽管它也涵盖了 C++(VS 在跟上步伐方面要好得多)。

于 2012-08-13T18:32:52.503 回答