【问题标题】:cygwin compile error in sys/_types.hsys/_types.h 中的 cygwin 编译错误
【发布时间】:2009-02-23 21:54:16
【问题描述】:

我正在尝试使用 cywin 在 win32 机器上构建一些 linux 代码。

我在 ym 编译器中收到以下 VS.net 2003 错误:

"c:\cygwin\usr\include\sys_types.h(15): 错误 C2144: 语法错误: '__int64' 应该以 ';' 开头 "

c:\cygwin\usr\include\sys_types.h(15): error C2501: 'extension' : 缺少存储类或类型说明符

代码行是

__extension__ typedef long long _off64_t;

显然我在这里遗漏了一些东西,但我以前从未使用过 cygwin,这让我很生气。

出于几个原因,我希望至少能够在我的 win32 机器上编译我的 CPP 文件。

(这只是数百个错误中的前两个错误)

谢谢, 时间

编辑:

我选择的简单解决方法作为答案 - 尽管我确实理解它不像使用 gcc 编译那样完整或可取...... 这是一个快速而肮脏的编译,因此我可以在尝试与 linux 机器集成之前使用我熟悉的工具。 (哦,跨平台开发的乐趣)

到目前为止,我对每个答案都投了赞成票,感谢您的帮助)

【问题讨论】:

    标签: c++ cygwin


    【解决方案1】:

    我可能是错的,但是 cygwin 头文件可以专门用于使用 cygwin gcc 而不是 Visual Studio 进行编译。尝试在 cygwin 中使用 gcc/g++ 编译。

    编辑:我也许可以使用 Visual Studio,这个页面(对于另一个项目)似乎暗示你可以用 vc++/cygwin 编译一些东西。 http://opensg.vrsource.org/trac/wiki/BuildVS2005Cygwin.

    您可能想检查一下。

    EDIT2:另见:http://www.coin-or.org/OS/documentation/node14.html

    EDIT3:我想最好的粗略做法是确保 Visual Studio 首先搜索标准 Windows 路径。所以如果有系统<sys/types.h>,那可能比cygwin版本更受欢迎。

    【讨论】:

      【解决方案2】:

      __extension__ 关键字是 gcc 扩展,表示使用 gcc 扩展的代码(在本例中为 long long),因此它不会在迂腐模式下崩溃。如果可以,请尝试使用 gcc 编译您的代码。

      【讨论】:

      • 这可以通过#defining关键字来解决吗?
      • 我也会尝试 ggc ass,但我也#defined extension,它的表现似乎好多了。
      • 如果可行,那就没问题了。无论如何,关键字没有任何实际意义。但是,我有点担心 MSVC 没有的 gcc 扩展 - 例如。扩展 asm、复合文字?、可变长度数组等。如果源包含这些,除了 gcc 你别无选择
      【解决方案3】:

      在 C++ 中,任何前面(或包含)双下划线的名称都是为特定实现保留的名称,在这种情况下是 GNU C++。 MS C++ 将使用其他名称。底线 - 如果源使用此类名称,则不能使用 MS C++ 编译 g++ 源,反之亦然。

      【讨论】:

        【解决方案4】:

        我认为extension宏可能没有定义。您可能想在 cygwin 标头目录上进行文本搜索,看看是否是这种情况。如果是这样,请确保您的标题搜索路径定义正确,等等。

        【讨论】:

        • 另外,请注意,在这种情况下,将宏消隐在 re: jpalcek 下面。显然你必须小心你这样做。
        猜你喜欢
        • 1970-01-01
        • 2011-09-05
        • 1970-01-01
        • 2012-01-22
        • 1970-01-01
        • 1970-01-01
        • 2012-09-26
        • 2013-02-10
        • 1970-01-01
        相关资源
        最近更新 更多