"неожиданно в определении макроса"

я написал

#ifndef Header1.h
#define Header1.h

class Complex
{
 [...]
};

#endif

в моем проекте (Visual Studio 2010), и я получаю сообщение об ошибке C2008: '.' : неожиданно в определении макроса. Я не понимаю, в чем проблема с "Header1.h" или как ее исправить.

4 ответа

Не используйте. вместо этого используйте _

#ifndef HEADER1_H
#define HEADER1_H

class Complex
{
 [...]
};

#endif


Здесь вам нужно использовать идентификатор:

#ifndef Header1.h
 ^^^^^^^^^

и они не могут включать . в них мы можем видеть это из проекта стандарта C++ стандарта 16 Директивы предварительной обработки, пункт 1, который включает следующую грамматику:

# ifdef identifier new-line groupopt
 ^^^^^^^^^^
# ifndef identifier new-line groupopt
 ^^^^^^^^^^

как правило, включают в себя охранники - все шапки и символы подчеркивания:

#ifndef HEADER1_H


Имена макросов не могут содержать периоды. Переименуйте его в Header1 или Header1h.

В стороне, для большинства макросов стандартным является ALL_UPPERCASE.


Имя макроса не должно содержать точку. Вам лучше использовать

#ifndef HEADER1_H
#define HEADER1_H

...

#endif

licensed under cc by-sa 3.0 with attribution.