#define __MY_BOOK__在myBook.h中定义了
typedef enum {
... ...
STR_MY_BOOK,
... ...
} STR_ID_BOOK_ENUM;在myBook.c文件中包含了该头文件
#ifdef __MY_BOOK__
#include "myBook.h"
#endif在该文件中使用STR_MY_BOOK字符串的时候必须放在#ifdef __MY_BOOK__
AddmyId(STR_MY_BOOK,,...);
#endif中使用,如果不是在这个预编译包含中使用就会说STR_MY_BOOK没定义。
即直接使用函数:AddmyId(STR_MY_BOOK,,...);
按理说这条语句不放在宏控制之间也能找到STR_MY_BOOK啊,搞了好久也不知道什么原因?
请大虾指教!
typedef enum {
... ...
STR_MY_BOOK,
... ...
} STR_ID_BOOK_ENUM;在myBook.c文件中包含了该头文件
#ifdef __MY_BOOK__
#include "myBook.h"
#endif在该文件中使用STR_MY_BOOK字符串的时候必须放在#ifdef __MY_BOOK__
AddmyId(STR_MY_BOOK,,...);
#endif中使用,如果不是在这个预编译包含中使用就会说STR_MY_BOOK没定义。
即直接使用函数:AddmyId(STR_MY_BOOK,,...);
按理说这条语句不放在宏控制之间也能找到STR_MY_BOOK啊,搞了好久也不知道什么原因?
请大虾指教!
#include "myBook.h"
#endif
--------------------
好矛盾,好奇怪,这样怎么可能会#include "myBook.h";这样才是吧
#ifndef __MY_BOOK__
#include "myBook.h"
#endif
-------------------
这样只是没有编译错误而已啊。
因为上面我说的原因__MY_BOOK__根本没有被定义也没有包含头文件,所以AddmyId(STR_MY_BOOK,,...);这一句不会参加编译,自然不会报没有定义的错误。#ifndef __MY_BOOK__
#include "myBook.h"
#endif
这样就好了吧
#define __MY_BOOK__
放在了myBook.c文件的最开始位置。否则
-0--------------------------------------
__MY_BOOK__是在头文件里面定义的,你的头文件由于条件编译的原因都没有被include,这个宏怎么可能被定义了呢你用#pragma message( "message" )加到ifdef里面,看看到底这个条件编译哪些编译到了,哪些没有
#ifdef __MY_BOOK__
#pragma message( "__MY_BOOK__ has been defined." )
#include "myBook.h"
#endif#ifdef __MY_BOOK__
AddmyId(STR_MY_BOOK,,...);
#pragma message( "__MY_BOOK__ has been defined." )
#endif
这个定义是在.c文件,而不在头文件中吗?