【发布时间】:2014-03-21 23:59:36
【问题描述】:
需要写一个C程序。如果在 C 语言编译器中运行,程序应打印“C”。如果它在编译器 C++ 中运行,它应该打印“C++”。
不能使用预处理指令。
in 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++
还有更好的方法吗?
【问题讨论】:
-
选择链接问题的任何答案。
-
你可以改用
sizeof('a') == 1,因为sizeof(char) == 1的定义。 -
这是一种合理的方式来完成这项工作(至少如果您也打印换行符)。它比我对标题所期望的要简单得多,即确定哪个编译器名称和版本号。