警告LNK4006:"unsigned char * XXX" (?XXX@@3PAEA)已在WWWWW.o中定义;忽略第二个定义

warning LNK4006: "unsigned char * XXX" (?XXX@@3PAEA) already defined in WWWWW.o; second definition ignored

本文关键字:定义 WWWWW 已在 第二个 XXX@@3PAEA unsigned LNK4006 char XXX 警告      更新时间:2023-10-16

我在font.h文件中声明并定义一个字体数据,如下所示:

#ifndef _DEFAULT_FONT_H
#define _DEFAULT_FONT_H
const unsigned char wwDefaultFont_TextureData[] = 
{
    0x00,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
};
#endif

我计划在render.h文件中使用这个数组。所以我把它包括为#include"font.h"

#include "font.h"
class render{
};

但我收到链接警告LNK4006错误?

声明此变量并避免此链接警告的最佳方式是什么?

我认为您可能不会定义头文件宏来避免重复包含头文件。如果这是真的,你有两种方法可以避免这种情况:

  1. 使用

    #ifndef _FONT_H_
    #define _FONT_H_
    //font.h content
    ...
    #endif
    

    确保只包含一次

  2. 如果您只在font.h中使用const变量,则可以使用extern来声明它,并且不需要包含头文件