在多个c文件中使用嵌入图片
我有一个eMebedd项目,其中包含几个要在屏幕上显示的图像。图像以二进制颜色存储在头文件中。 我想在项目中的两个不同位置使用该图像。但是在两个c文件中都包含头文件会导致链接失败,因为它希望链接图像两次在多个c文件中使用嵌入图片,c,C,我有一个eMebedd项目,其中包含几个要在屏幕上显示的图像。图像以二进制颜色存储在头文件中。 我想在项目中的两个不同位置使用该图像。但是在两个c文件中都包含头文件会导致链接失败,因为它希望链接图像两次 如何将其组织为仅链接一次?从技术上讲,您的头文件在项目中只应包含一次。为了确保这一点,大多数人都使用一个包含防护装置。你在使用防护罩吗 维基百科有一个很好的解释页面 TLDR; 使用 首先,头文件不应包含任何代码或数据 在头文件中,只有外部声明 图像.h extern char image[
如何将其组织为仅链接一次?从技术上讲,您的头文件在项目中只应包含一次。为了确保这一点,大多数人都使用一个包含防护装置。你在使用防护罩吗 维基百科有一个很好的解释页面 TLDR; 使用
首先,头文件不应包含任何代码或数据 在头文件中,只有外部声明 图像.h
extern char image[];
图c
char image[] = {/* image data */};
声明变量
static
,使其对每个源文件都是私有的。最好不要将数据放在头文件中。将数据放在C模块中,并从头文件引用它。这仅在同一个头文件多次包含在单个C文件中时有效。当头包含在单独的C文件中时,它不起作用。相同的数据最终会出现在不同的对象文件中,这正是链接器所抱怨的。.如果在头文件sizeof(image)中放置extern声明不起作用,如何获得数组的大小。您可以显式声明它,或者改用struct。顺便说一句,你知道图像的大小,所以你可以计算数组的大小。
char image[] = {/* image data */};