Я просматривал код для гольфа и получил идею попробовать этот код:
#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, но также включает #.