Я заметил, что попытка определить defined
как макрос в C / C ++ дает ошибку:
error: "defined" cannot be used as a macro name
Это не кажется мне странным, так как разрешение переопределения defined
будетвероятно нарушить #if defined(...)
-подобные директивы.Тем не менее, это заставило меня задуматься, какие другие ключевые слова будут давать ошибку компиляции 1 .Я обнаружил, что именованные операторы C ++ также нельзя использовать в define
, но я не смог найти список всех невозможных макросов.Существуют ли другие макросы, которые не могут быть определены?
1 , в то время как (пере) определение ключевых слов, таких как if
или int
, является наихудшей вещью, которую можно сделать с препроцессоромЭто не приводит к ошибке компиляции.Я ищу ключевые слова, которые вообще не будут компилироваться.