Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.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_Compiler Construction - Fatal编程技术网

C 如何将大量全局数据构建到特定部分?

C 如何将大量全局数据构建到特定部分?,c,compiler-construction,C,Compiler Construction,我有一个包含很多全局变量的c源文件,我想在一个特定的部分中使用这些全局变量构建一个对象文件。为每个变量添加\uuuu属性((节(“节名”))除了逐个添加外,如何将这些变量构建到特定节?您可以将全局变量变为一个或多个全局结构的成员。您可能还需要考虑您的设计以及是否真的需要大量的全局变量。最后想想你真正想要达到的目标;您还没有提供它们都应该位于特定节中的原因。最简单的解决方案是objcopy——随后重命名节。另一个选项是链接器脚本: SECTIONS { .YourSection { YourF

我有一个包含很多全局变量的c源文件,我想在一个特定的部分中使用这些全局变量构建一个对象文件。为每个变量添加
\uuuu属性((节(“节名”))
除了逐个添加外,如何将这些变量构建到特定节?

您可以将全局变量变为一个或多个全局结构的成员。您可能还需要考虑您的设计以及是否真的需要大量的全局变量。最后想想你真正想要达到的目标;您还没有提供它们都应该位于特定节中的原因。

最简单的解决方案是
objcopy——随后重命名节。另一个选项是链接器脚本:

SECTIONS {
  .YourSection { YourFile.c(COMMON) }
}

使用sed?使用宏?在没有看到一些源代码的情况下很难回答。您必须添加您尝试的内容。@naveengoyal胡说八道。哪个编译器<代码>\uuuu属性\uuuuu
建议使用GCC.hi匿名,在我的c源文件中,我使用宏构建一个只包含全局变量的.o文件,然后使用objcopy从.o文件生成一个bin文件。这个c文件包含一些头部文件,其中包含一些我不想构建的全局变量。所以我想也许我可以把我的全局数据放到一个特定的部分,然后用objcopy把它们从其他无用的数据中分离出来。我想构建一个bin文件,它将在我的c源文件中包含所有全局变量。但是这个c文件包含一些头部文件,其中包含一些我不想构建的全局变量。所以我想也许我可以把我的全局数据放到一个特定的部分,然后用objcopy把它们从其他无用的数据中分离出来。但是你为什么要这样做呢?我只想用同一个C源文件构建对象文件和bin文件,我的C源文件可以从bin文件获取数据,也可以从它的内置全局数据中获取数据。。。如果我以后想更改数据,我可以只构建一个新的bin文件,不需要构建代码。@norman听起来像是一个糟糕的设计。文件应该具有定义良好的独立于机器的格式,而不仅仅是当前全局变量的二进制转储。