В каких-нибудь компиляторах реализованы предупреждения о возможных ошибках в написании похожих имен?
Классический пример — "#ifdef MyMacro". Если вместо "MyMacro" будет "myMacro" или "Mymacro" — оно будет тихо пропущено, как и при любых других ошибках в имени (определено MYMACRO, проверяется MYMACR), и замаешься искать такие ошибки. У себя я уже давно использую только #if, никаких #ifdef/#ifndef.
Такая же фигня с перегруженными функциями, шаблонной магией и подобными вещами.
Так же визуально трудно отличить, например, "l" от "1". Такой ляп, конечно, допустить нелегко, но таки можно.
А если компилятор поддерживает Unicode, то и вовсе открывается широчайший простор для косяков — многие буквы с разными кодами совершенно неотличимы визуально.
Сейчас прогнал с /Wall свежий VC++ 19.29 из последнего обновления VS 2019 — его такие сочетания совершенно не напрягают.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>В каких-нибудь компиляторах реализованы предупреждения о возможных ошибках в написании похожих имен?
ЕМ>Классический пример — "#ifdef MyMacro". Если вместо "MyMacro" будет "myMacro" или "Mymacro" — оно будет тихо пропущено, как и при любых других ошибках в имени (определено MYMACRO, проверяется MYMACR), и замаешься искать такие ошибки. У себя я уже давно использую только #if, никаких #ifdef/#ifndef.
clang-tidy проверять на заднный в конфиге стиль, то есть например может проверить что все
макросы заданны большими буквами. То есть останется только класс ошибок MYMACR(O).
Еще по крайней мере CLion умеет находить ошибки в правописании в идентификаторах.
То есть подчеркивать желтым все что не MY_MACROS.