c++ - OS X 和 Linux (C/C++) 之间的差异

标签 c++ c linux ipc

我在学校有一门课,我们在 Linux 下使用 C/C++ 编写代码。我们主要使用线程、信号量、进程(fork()、pipes() 等)、IPC 来开发服务器/客户端应用程序。我有一台 MacBook,我真的不想强制它运行 Ubuntu(我们在学校使用它),所以我想问一下我可以在 Mac 上开发,然后将代码带到 Linux 上并用 g++ 编译吗?

目前我能够这样做,但我不确定将来是否会遇到问题。例如,在 Windows 下,forks 和 sockets 以完全不同的方式完成,所以我只想知道差异在哪里(OS X 与 Ubuntu)以了解我需要在 Linux 下编写特定代码。

最佳答案

OS X 基于 Unix(如 Linux)并遵循 POSIX(在某种程度上)。如果您使用 OS X 中可用的 POSIX 函数,则在 Linux 下运行代码时应该没有(或最少)问题。

但反之则不然,因为 Linux 在更高程度上遵循 POSIX 并且(几乎)符合最新的 POSIX 标准,而 OS X 不支持较新的版本。此外,GNU 对 POSIX 工具和库有许多扩展,这些扩展可能在 OS X 上不可用。

简而言之,在 Linux 下,您可以使用更新的和功能丰富的库。然而,在 OS X 中发现的 POSIX 的古老功能在 Linux 中也可用。所以一般来说应该没有问题,只要你坚持标准的行为。

关于c++ - OS X 和 Linux (C/C++) 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22759016/

相关文章:

linux - 使用取消共享并仍在执行原始功能

linux - 如何判断链接器正在使用哪个静态库

c++ - 什么时候类必须在 C++ 类中定义析构函数是必要的,为什么?

c++ - 如何使用 WM_* 消息调整窗口大小

c - STM32F4卡在I2C_CheckEvent()

c - c中二维数组中的随机值

c++ - 这种使用 std::promise 线程安全吗?

c++ - 文件转换的输出问题

c - 反汇编c程序时神秘的printf参数

linux - alsa - 内存泄漏?