如果我正在为裸机编译C程序,我知道我可以插入像
这样的东西#if defined(__linux__)
#error "You're not using a cross-compiler."
#endif`
但是,我不想检查每个操作系统。是否有单一检查以确定我是否在托管环境中?
答案 0 :(得分:1)
如果您想确定使用-ffreestanding
构建,请在代码中检查__STDC_HOSTED__
宏。普通代码将设置为1,独立构建设置为0。
请参阅GCC信息页面或文档。相关的引用是
默认情况下,它充当托管的编译器 实施,定义' STDC_HOSTED '作为' 1'并假设 当使用ISO C函数的名称时,它们具有语义 在标准中定义。使其成为一个符合标准的独立式 实现独立环境,使用该选项 ' -ffreestanding&#39 ;;然后定义' STDC_HOSTED '到' 0'并没有 从标准中对函数名称的含义做出假设 图书馆,下面有例外情况。