【问题标题】:Compiling ANSI C++ code on Mac OS X [closed]在 Mac OS X 上编译 ANSI C++ 代码 [关闭]
【发布时间】:2010-12-27 08:08:49
【问题描述】:

我正在努力在 Mac OS X 上编译和运行一个程序,该程序是使用 ANSI/ISO C++ (Windows) 编写的。 Source code

我尝试使用 g++ 进行编译,并通过导入文件并使用 Xcode 进行编译。

如果我尝试使用 g++(命令行)进行编译,我会收到一些警告,这些警告很容易修复:

例如warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘long unsigned int’.

但是,我也遇到了一些奇怪的错误。

如果我创建一个类型为“C++ stdc++”的简单“命令行工具”项目,并导入该项目中的所有文件,它会给我一堆警告和一个错误。

谁能帮我编译这个示例源代码?期待中的感谢。

【问题讨论】:

  • 没有 ANSI 或 ASCII C++ 这样的东西。你是说 ISO C++ 吗?还是您的意思是 C?
  • 您没有想到我们可能需要查看那些“奇怪的错误”吗? ;)
  • @David,我的意思是 ANSI/ISO C++。 @Jalf,我想既然代码可用,任何人都可以尝试编译它以查看问题。
  • 请务必发布错误消息;帮助那些能够帮助你的人!

标签: c++ macos compilation ansi


【解决方案1】:
  • 在 stopwatch.cpp 中,将第 49 行的包含从 strstream.h 更改为 sstream。
  • 在 stopwatch.cpp 第 50 行中,将包含从 fstream.h 更改为 fstream。
  • 在 qsort.h 中更改Qsort() 的声明,使第二个和第三个参数为unsigned long 而不是size_t
  • 在 qsort.cpp 中更改Qsort() 的定义,使第二个和第三个参数为unsigned long 而不是unsigned

附带说明,Qsort() 的声明和定义在签名中(必然)不匹配,这是不正确的。

【讨论】:

  • 太棒了!我真的很感谢你抽出一些时间来帮助我。非常感谢。
【解决方案2】:

在 qsort.cpp 中将函数 decleration 更改为:

 52 void __cdecl Qsort (
 53     void *base,
 54     unsigned long num,
 55     unsigned long width,
 56     int (__cdecl *comp)(const void *, const void *)
 57     )

所以我们只是将long 添加到numwidthvariables。

您还必须解决简单的问题,例如#include <strstream.h>-> #include <strsream>

【讨论】:

  • 非常感谢您抽出时间来帮助我。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 1970-01-01
  • 2010-11-07
相关资源
最近更新 更多