Вопрос по С и С++
точнее наверное в стандарте должно быть
`__cplusplus'
This macro is defined when the C++ compiler is in use. You can use
`__cplusplus' to test whether a header is compiled by a C compiler
or a C++ compiler. This macro is similar to `__STDC_VERSION__', in
that it expands to a version number. A fully conforming
implementation of the 1998 C++ standard will define this macro to
`199711L'. The GNU C++ compiler is not yet fully conforming, so
it uses `1' instead. It is hoped to complete the implementation
of standard C++ in the near future.
c = a&&b
тогда если а - false, то в С b будет вычислено, а в С++ нет и тогда можно будет написать
if(b == null) then println("C++") else println("C");
b = 1;
#ifdef __cplusplus
b = null
#endif
?
printf("%d", sizeof('a';
Не работает, если я уберу unicode из опций.
желательно без #ifdef
и каков же будет результат? с юникодом и без. в плюсах и просто?
#include <stdio.h>
int main
{
printf("%s\n", (sizeof('a') == sizeof(char ? "C++" : "C");
return 0;
}
Думаю еще можно поискать в вызовах функций, а именно:
При описании функций отсутствие аргументов в скобках означает, в отличие от Си, что аргументов нет, а не то, что они неизвестны.
Ну еще можно наверно поискать в операциях с приведением указателей.
Да, и разные другие отличия. Только в одном языке будет транслироваться, а в другом нет. Но ему надо, чтобы работало везде? Или сойдёт, когда один вылетит с ошибкой?
Использованный компилятор ведь в процессе исполнения программы не меняется.
Страуструп. Приложение Б "Совместимость" - как раз ответ на твой вопрос
А чем такая желательность обусловлена?Чем-чем, препод задал очевидно.
Задача. Написать программу, которая транслировалась бы максимумом трансляторов/интерпретаторов и писала бы, каким языком её обработали. Паскаль, перл, С, С++, basic и т.д.
Чем-чем, препод задал очевидно.Зачем учат такой хуйне? Кто препод? Это же пиздец, нормальному чему-то надо учить.
Задача. Написать программу, которая транслировалась бы максимумом трансляторов/интерпретаторов и писала бы, каким языком её обработали. Паскаль, перл, С, С++, basic и т.д.
Оставить комментарий
an11
Есьт код, который обрабатывается компилятором и С, и С++.Как сделать так что бы этот код определял каким компилятором он был скомпилирован. То есть после обработки компилятором С, писалось что программа скомпилирована С компилятором, аналогично с С++.