Почему я не могу использовать #define для ключевых слов в C?

Я пытаюсь использовать следующий код в C ++. Может кто-нибудь сказать мне, почему он показывает ошибку?

#define  def namespace;
using def std;
int main(){
return 0;
}

пока следующий код работает нормально

#define  def namespace std;
using def;
int main(){
return 0;
}

2

Решение

Это из-за встроенной точки с запятой:

#define  def namespace;
^
|
WHOA!

Обратите внимание, что #define сама по себе не нуждается в точке с запятой для завершения определения, поэтому, если вы ее используете, она становится частью текста, который будет вставлен везде, где используется макрос.

После предварительной обработки первый пример превратит using строка в:

using namespace; std;

который имеет синтаксические проблемы, очевидно.

Исправление состоит в том, чтобы удалить точку с запятой в #define линия, вот так:

#define def namespace

Вы должны выяснить, как читать предварительно обработанный код с помощью компилятора, это всегда полезно при устранении путаницы, вызванной макросами.

16

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]