“宏观定义出乎意料”

时间:2013-11-05 19:57:14

标签: c++ macros

我写了

#ifndef Header1.h
#define Header1.h

class Complex
{
   [...]
};

#endif

在我的项目(Visual Studio 2010)中,我得到一个错误C2008:'。' :宏定义中出乎意料。我不明白“Header1.h”的问题是什么或如何修复它。

4 个答案:

答案 0 :(得分:4)

不要使用。使用_而不是

#ifndef HEADER1_H
#define HEADER1_H

class Complex
{
   [...]
};

#endif

答案 1 :(得分:2)

您需要在此处使用标识符

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

并且他们can not include .,我们可以从草案C ++标准部分16 预处理指令 1 中看到这一点,其中包括以下内容语法:

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

通常包括警卫都是大写字母和下划线:

 #ifndef HEADER1_H

答案 2 :(得分:1)

宏名称不能包含句点。将其重命名为Header1Header1h

顺便说一下,大多数宏的标准是ALL_UPPERCASE。

答案 3 :(得分:1)

宏名称不应包含点。你最好用

#ifndef HEADER1_H
#define HEADER1_H

...

#endif