Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在多个c文件中使用嵌入图片_C - Fatal编程技术网

在多个c文件中使用嵌入图片

在多个c文件中使用嵌入图片,c,C,我有一个eMebedd项目,其中包含几个要在屏幕上显示的图像。图像以二进制颜色存储在头文件中。 我想在项目中的两个不同位置使用该图像。但是在两个c文件中都包含头文件会导致链接失败,因为它希望链接图像两次 如何将其组织为仅链接一次?从技术上讲,您的头文件在项目中只应包含一次。为了确保这一点,大多数人都使用一个包含防护装置。你在使用防护罩吗 维基百科有一个很好的解释页面 TLDR; 使用 首先,头文件不应包含任何代码或数据 在头文件中,只有外部声明 图像.h extern char image[

我有一个eMebedd项目,其中包含几个要在屏幕上显示的图像。图像以二进制颜色存储在头文件中。 我想在项目中的两个不同位置使用该图像。但是在两个c文件中都包含头文件会导致链接失败,因为它希望链接图像两次


如何将其组织为仅链接一次?

从技术上讲,您的头文件在项目中只应包含一次。为了确保这一点,大多数人都使用一个包含防护装置。你在使用防护罩吗

维基百科有一个很好的解释页面

TLDR; 使用


首先,头文件不应包含任何代码或数据

在头文件中,只有外部声明

图像.h

  extern char image[];
图c

  char image[] = {/* image data */};

声明变量
static
,使其对每个源文件都是私有的。最好不要将数据放在头文件中。将数据放在C模块中,并从头文件引用它。这仅在同一个头文件多次包含在单个C文件中时有效。当头包含在单独的C文件中时,它不起作用。相同的数据最终会出现在不同的对象文件中,这正是链接器所抱怨的。.如果在头文件sizeof(image)中放置extern声明不起作用,如何获得数组的大小。您可以显式声明它,或者改用struct。顺便说一句,你知道图像的大小,所以你可以计算数组的大小。
  char image[] = {/* image data */};