C noob在这里。我有一个全局标题,opennec.h
,它有一堆包括<math.h>
等等。它还有几个基本定义:
#define NUM_COMNTS 5
char *comment_codes[NUM_COMNTS] =
{
"CM", "CE", "!", "'", "#"
};
由于多个定义(当然),这些引起了投诉,所以我做了我第一次忘记做的事情并添加了警卫:
#ifndef COMNT_CODES_DEF
#define COMNT_CODES_DEF
#define NUM_COMNTS 5
char *comment_codes[NUM_COMNTS] =
{
"CM", "CE", "!", "'", "#"
};
#endif
但是...
duplicate symbol _comment_codes in:
calculations.o
somnec.o
好吧,我做错了什么?
你的comment_codes
符号需要在头文件中声明,
#ifndef COMNT_CODES_DEF
#define COMNT_CODES_DEF
#define NUM_COMNTS 5
extern char *comment_codes[NUM_COMNTS];
#endif
和一个(只有一个)c文件中的定义。
#include "comnt_codes.h"
char *comment_codes[NUM_COMNTS] = {
"CM", "CE", "!", "'", "#"
};
否则,包含您的注释代码标头的每个c文件都将提供comment_codes
的冲突定义。