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?

questionAnswers(3)

yourAnswerToTheQuestion