Ваш профессор не прав.§ 2.11 / 1 стандарта C ++ гласит: « Все символы значимы».Конечно, компиляторы могут наложить ограничение на допустимую длину, как отмечено в вашем другом вопросе.Это не значит, что они могут игнорировать символов после этого.
Он, вероятно, путает C и C ++.Два языка имеют похожие, но не идентичные правила.Исторически, у C было ограничение в шесть значащих символов.
Что касается вашего теста, существует гораздо более простой способ проверить вашу гипотезу.Обратите внимание, что
int a;
int a;
недопустимо, поскольку вы определяете один и тот же идентификатор дважды.Теперь , если ReallyLongNameA
и ReallyLongNameB
будут отличаться только незначительными символами, тогда
int ReallyLongNameA;
int ReallyLongNameB;
также будет ошибкой во время компиляции, поскольку оба будут объявлять одну и ту же переменную,Вам не нужно запускать код.Вы можете просто сгенерировать test.cpp
с этими двумя строками и попытаться скомпилировать его.Итак, напишите небольшую тестовую программу, которая создает все более длинные имена идентификаторов, запишите их в test.cpp
и вызовите system("path/to/compiler -compileroptions test.cpp");
, чтобы посмотреть, скомпилируется ли она.