Ponowne definiowanie słów kluczowych w C / C ++
Czy mogę ponownie zdefiniować słowa kluczowe za pomocą #define w C?
Znalazłem to w standardach C ++:
ISO / IEC 14882: 1998 i ISO / IEC 14882: 2003
17.4.3.1.1 Nazwy makr [lib.macro.names]
2 Jednostka tłumaczenia zawierająca nagłówek nie może zawierać żadnych makr, które definiują nazwy zadeklarowane lub zdefiniowane w tym nagłówku. Taka jednostka tłumaczeniowa nie definiuje również makr dla nazw identycznych leksykalnie ze słowami kluczowymi.
164) Nie można usuwać definicji makra biblioteki za pomocą dyrektywy #undef.
ISO / IEC 14882: 2011
17.6.4.3.1 Nazwy makr [makro.names]
2 Jednostka tłumaczeń nie może nazywać się #define ani #undef leksykalnie identycznymi ze słowami kluczowymi, identyfikatorami wymienionymi w Tabeli 3 lub znacznikami atrybutów opisanymi w 7.6.
Nie możemy więc przedefiniować słów kluczowych w C ++ 98 / C ++ 03, jeśli dołączymy jakiekolwiek pliki nagłówkowe ze standardowej biblioteki C ++, podczas gdy w C ++ 11 nie możemy tego zrobić w żadnej jednostce tłumaczeniowej, prawda?