0

我有一个自定义头文件("strings.h"):

#ifdef __cplusplus
#if __cplusplus
extern "C"{
#endif
#endif /* __cplusplus */
#include "sdkGlobal.h"

#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* __cplusplus */

#if !defined administration_H_
#define administration_H_

#define POS_STR_TITLE_OPERATIONS "somestr"

#endif

在我拥有的一个源文件中:

#include "../inc/strings.h"

在我使用的代码中:

    sdkShow (LINE3, 0, POS_STR_TITLE_OPERATIONS );

我得到错误:

src/main.c: In function 'postMainMenu':
src/main.c:190: error: 'POS_STR_TITLE_OPERATIONS ' undeclared (first use in this function)
src/main.c:190: error: (Each undeclared identifier is reported only once
src/main.c:190: error: for each function it appears in.)
make[1]: *** [src/main.o] Error 1
make: *** [all] Error 2

任何想法为什么?

4

2 回答 2

1

它似乎administration_H_已经定义了。所以而不是

#if !defined administration_H_
#define administration_H_

#define POS_STR_TITLE_OPERATIONS "somestr"

#endif

你打算

#if !defined administration_H_
#define administration_H_
#endif

#if !defined POS_STR_TITLE_OPERATIONS
#define POS_STR_TITLE_OPERATIONS "somestr"
#endif
于 2014-01-08T11:28:44.327 回答
1

守卫应该总是反映要守卫的头文件的名称,所以它应该是“strings_H_”和“sdkGlobal_H_”

它适用于头文件具有自己依赖关系的更大产品。例如 "ah" 需要 "length.h" 而 "bh" 也需要 "length.h",你保护 "length.h" 被评估一次。

于 2014-01-08T11:52:02.207 回答