Я просматривал код для гольфа и получил идею попробовать этот код:
#define D #define
после добавления этой строки все работало нормально, однако я расширил ее следующим образом:
#define D #define
D VALUE
И здесь я получил 5 ошибок компиляции. Если я изменю D
на #define
, все будет в порядке, может кто-нибудь объяснить, почему этот код является незаконным?
ПРИМЕЧАНИЕ: Я использовал компилятор VS2008.
EDIT: После некоторых ответов я вижу, что мне нужно предоставить список ошибок компиляций:
- ошибка C2121: '#': недопустимый символ: возможно, результат расширения макроса
- ошибка C2146: синтаксическая ошибка: отсутствует ';' перед идентификатором "VALUE"
- ошибка C4430: отсутствует спецификатор типа - int. Примечание: С++ не поддерживает default-int
- ошибка C2144: синтаксическая ошибка: "void" должен предшествовать ';'
- ошибка C4430: отсутствует спецификатор типа - int. Примечание: С++ не поддерживает default-int
Первая ошибка показывает, что D
не просто define
, но также включает #
.