Перегрузить троичный оператор?: Или изменить на if {} else {} во включенных файлах

Исследовательский проект здесь. В мою библиотеку C ++ я включаю файлы C:

#include "aprogram.c"

который я выполняю символически, перегружая (почти) все операторы.

Я должен быть в состоянии обнаружить (condition) ? this : that и извлечь condition, this а также that для использования в моей символической библиотеке выполнения. Тем не мение, ТАКИМ ОБРАЗОМ, 1, SO 2 а также SO 3 среди других уже помог мне понять, что ?: не может быть перегружен.

  • Есть ли способ для меня, чтобы принудительно перегрузить ?: в любом случае?
  • Могу ли я изменить все ?: операторы из моего включенного C-файла в ifelse-операторы без фактического изменения файла?

0

Решение

Согласно стандарту C ++ вам не разрешено перегружать?
Лучшее, что вы можете сделать, это использовать макросы C (но это может привести к ужасному коду).

1

Другие решения

Макросы были добавлены в компилятор C в 1970-х годах, чтобы упростить конструкцию компилятора. Макросы обрабатываются C-препроцессором. К сожалению, этот препроцессор наивен и выполняет лишь замену текста. Сгенерированный код часто неоправданно сложен, труден для просмотра (используется опция компиляции –E или –P) и сложен для отладки. В настоящее время вы должны использовать компилятор для обработки всего вашего кода (препроцессор обычно ограничен #include и условной компиляцией).

К сожалению, Бьярн Страуструп решил не разрешать перегрузку?: Ternary — не по какой-либо глубокой технической причине, а потому что это был единственный третичный оператор, и он чувствовал, что усилия по изменению компилятора были неоправданными.

0

По вопросам рекламы [email protected]