【发布时间】:2013-07-02 02:18:52
【问题描述】:
我在一次采访中被问到如何仅通过提供可运行的 C 代码来识别平台?
代码必须在两个平台都可以运行(即没有用于检查的特殊头文件功能)?
【问题讨论】:
-
这些问题是关于宏的,但我认为 OP 真的是在问你如何使用可以在多个平台上编译的代码来做到这一点。我建议探测文件系统中是否存在显示操作系统的文件。
-
从概念上讲,在构建环境级别而不是语言级别解决这个问题可能更有意义。 IE。让构建环境定义一个预处理器标志,允许代码确定平台。否则,您将有关编译器的知识引入源代码中,这会限制可移植性并且总体上不是很好。
-
我想问题不在于编译器指令,因为它们不是可运行的 c 代码,对吧?它更像是我使用什么代码来检测平台。很奇怪,因为无论如何您都必须为特定平台编译 C 代码。猜猜这个问题对我来说有点模棱两可。
-
如何将其标记为重复。这是一个完全不同的问题。 (这可能是一个无意义的问题,或者一个没有答案的问题,但它肯定与作为重复链接的问题不同。)