我有一个自定义头文件("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
任何想法为什么?
答案 0 :(得分: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
答案 1 :(得分:1)
守卫应该始终反映要保护的头文件的名称,因此它应该是“strings_H_”和“sdkGlobal_H _”
它适用于头文件具有自己的依赖关系的更多产品。例如“a.h”需要“length.h”而“b.h”需要“length.h”,你也要保护“length.h”一次。