Kiz*_*aru 5 linux windows macos porting
我正在编写一个编译器项目,它将生成汇编代码作为目标语言.但是,根据操作系统的不同,需要考虑一些小的变化,我不知道如何检查操作系统.如果重要,我只关心32位.我在一些源代码中看到过类似的东西
#ifdef WIN32
Run Code Online (Sandbox Code Playgroud)
但我不知道这是如何工作的.
编辑:一些澄清.我在所有三个平台上都使用gcc.我不知道在每个平台中是否通过gcc定义了像WIN32这样的宏.如果是这样,这些常数似乎解决了我的问题.
使用的#ifdef
用途预处理器符号,这取决于符号定义条件编译代码.在您的示例中,编译器或#include
文件可能会定义WIN32
,这意味着代码是在Win32环境中编译的.
根据编译器和平台,可能存在不同的预定义符号,其指示与当前编译环境相关的操作系统或处理器架构(以及许多其他可能的事物).
使用gcc
,您可以使用以下命令行显示预定义的符号:
gcc -E -dM - </dev/null
Run Code Online (Sandbox Code Playgroud)
在我的机器上,其中一个定义的符号是:
#define __FreeBSD__ 8
Run Code Online (Sandbox Code Playgroud)
这恰好意味着我正在运行FreeBSD 8版.
(以上内容适用于C和C系列语言,如C++.)
归档时间: |
|
查看次数: |
9138 次 |
最近记录: |