Исследовательский проект здесь. В мою библиотеку C ++ я включаю файлы C:
#include "aprogram.c"
который я выполняю символически, перегружая (почти) все операторы.
Я должен быть в состоянии обнаружить (condition) ? this : that
и извлечь condition
, this
а также that
для использования в моей символической библиотеке выполнения. Тем не мение, ТАКИМ ОБРАЗОМ, 1, SO 2 а также SO 3 среди других уже помог мне понять, что ?:
не может быть перегружен.
?:
в любом случае??:
операторы из моего включенного C-файла в ifelse-операторы без фактического изменения файла?Согласно стандарту C ++ вам не разрешено перегружать?
Лучшее, что вы можете сделать, это использовать макросы C (но это может привести к ужасному коду).
Макросы были добавлены в компилятор C в 1970-х годах, чтобы упростить конструкцию компилятора. Макросы обрабатываются C-препроцессором. К сожалению, этот препроцессор наивен и выполняет лишь замену текста. Сгенерированный код часто неоправданно сложен, труден для просмотра (используется опция компиляции –E или –P) и сложен для отладки. В настоящее время вы должны использовать компилятор для обработки всего вашего кода (препроцессор обычно ограничен #include и условной компиляцией).
К сожалению, Бьярн Страуструп решил не разрешать перегрузку?: Ternary — не по какой-либо глубокой технической причине, а потому что это был единственный третичный оператор, и он чувствовал, что усилия по изменению компилятора были неоправданными.