Ваша настоящая проблема -
my colleague has declared a struct:
struct complex {
double a;
double b;
};
Исправьте это.
Все другие способы решения этой проблемы создают то, что будет де-факто недокументированной зависимостью от отмена стандартная функция C - определение макроса complex
.Лучшее, что ваша организация собирается сделать, это, вероятно, что-то вроде: «На странице 4 наших стандартов кодирования [у вас есть стандарты кодирования?] Говорится, что вам нужно #undef complex
после вас #include <complex.h>
, а затем #include <stomps/on/complex.h>
после этого".И какова вероятность того, что ваша организация так много делает?И затем удостоверится, что все в программе знают это?
Скорее всего, они не собираются прилагать усилия, чтобы сделать это, и они даже не приблизятся.
Вы попадете с небольшим количеством недокументированного племенизнание.
Опять-таки, есть ли в вашей организации письменные стандарты кодирования и применяются ли они на самом деле?Если вы не можете ответить «да» на это, вам действительно нужно устранить причину проблемы сейчас, а не оставлять ее скрытой, ожидая, что в будущем возникнут еще более серьезные проблемы.
, которые создает struct complex
не только зависимость от отмены стандартной функции C, но и зависимость порядка от директив #include
и оператора #undef
.Нет реального способа узнать, что может произойти, если эти зависимости строго не соблюдаются - нельзя исключать странные результаты и необъяснимые неудачи в будущем.
Да, это законно, и не так сложно его определить.макрос с #undef complex
.Но что происходит , когда кто-то не делает этого или делает это в неправильном порядке?
Написание и поддержка программного обеспечения достаточно сложны, когда вы делаете это правильно.Не усложняйте жизнь программы, сознательно делая что-то сомнительное в лучшем случае.