Нужно написать программу на C. Если он запущен в компиляторе языка C, программа должна напечатать «C». Если он запущен в компиляторе C++, он должен печатать «C++».Как написать программу, которая определяет ее компилятор
Директивы препроцессора не могут использоваться.
В голову приходит только сравнить размер любого характера с 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' по определению. –
Это разумный способ выполнить эту работу (по крайней мере, если вы также напечатаете новую строку). Это целая куча проще, чем то, что я ожидал от названия, а именно определение имени компилятора и номера версии. –