在Mac OS X上编译ANSI C ++代码

时间:2010-12-27 08:08:50

标签: c++ macos compilation ansi

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

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

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

  

e.g。 warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘long unsigned int’

但是,我也有一些奇怪的错误。

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

任何人都可以帮我编译这个示例源代码吗?感谢期待。

2 个答案:

答案 0 :(得分:5)

  • 在stopwatch.cpp中,将第49行的include从strstream.h更改为sstream。
  • 在stopwatch.cpp第50行中,将include从fstream.h更改为fstream。
  • 在qsort.h中更改Qsort()的声明,因此第二个和第三个参数为unsigned long而不是size_t
  • 在qsort.cpp中更改Qsort()的定义,因此第二个和第三个参数为unsigned long而不是unsigned

作为附注,Qsort()的声明和定义在签名中没有(必然)匹配,这是不正确的。

答案 1 :(得分:2)

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

 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添加到numwidth变量。

您还需要解决#include <strstream.h> - &gt;等简单问题。 #include <strsream>