c++ - 如何编写决定其编译器的程序

标签 c++ c

<分区>

需要写一个C程序。如果在C语言编译器中运行,程序应该打印“C”。如果它在编译器 C++ 中运行,它应该打印“C++”。

不能使用预处理器指令。

在 head 中只比较任何字符的大小与 char 大小,如:

sizeof(char)==sizeof('a')

这是它的工作原理:

// C code:
#include <stdio.h>
int main()
{
    printf("%s", (sizeof(char)==sizeof('a') ? "C++" : "C"));
    return 0;
}

输出: C

// C++ code:
#include <stdio.h>
int main()
{
    printf("%s", (sizeof(char)==sizeof('a') ? "C++" : "C"));
    return 0;
}

输出: C++

有更好的方法吗?

最佳答案

您可以检查 __cplusplus 宏以查看您是否被编译为 c++。

#include <stdio.h>

int main()
{
    printf("%s\n",
#if __cplusplus
            "C++"
#else
            "C"
#endif
          );
}

关于c++ - 如何编写决定其编译器的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21918033/

相关文章:

c++ - std::list 上的 splice() 和迭代器失效

c++ - 不紧凑的指针类型将 int 传递给 coretelephony obj c 中 void(*)(void) 类型的参数

c - 数组索引和通常的算术转换

c - 在 while 循环中正确使用 scanf 来验证输入

c - 如何将每个单词的首字母大写,除了某些单词 ("and"、 "but"、 "of")?

c++ - 如何对参数化模板函数进行类型推导

c++ - 与 jenkins 一起工作的最简单的 C++ 测试框架

c++ - 将基类指针的构造函数复制到子类

c - Malloc'ing 数组然后释放它们?

c++ - 如何查看用 C/C++ 编写的函数的源代码?