spamsink: (lenin)
[personal profile] spamsink


Не пользуясь условной компиляцией или знанием, какие значения каких символов препроцессора определяет тот или иной компилятор, напишите программу, валидную и как С, и как С++, которая определяет, в каком стандарте языка она скомпилирована: C89, C99, C11, C++98 или C++11.

Отличить C89 от остальных языков легко, и отличить C от C++ на практике легко, а дальше?



В C11, в отличие от предыдущих версий, есть юникодные строки вида U"...."

#define HAS_UNICODE(U) (sizeof(U"x") > 2)
#include <stdio.h>
int main() { puts(HAS_UNICODE() ? "Yes" : "No"); }


Аналогичный трюк в С++11, где есть "raw strings" вида R"(...)".
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting
Page generated Mar. 6th, 2026 12:25 pm
Powered by Dreamwidth Studios