如何将C程序代码转换为char []?

时间:2018-12-27 13:23:21

标签: c string c-preprocessor opencl embedded-resource

我正在编写一个OpenCL内核,然后将其编译为可在GPU上运行。内核代码包含在* .cl文件中,然后由应用程序读取。始终将* .cl文件复制到应用程序文件夹很不方便。如果可以在应用程序编译期间将内核代码解析并转换为C char []字符串,则将是更好的解决方案。这样就无需向应用程序的用户提供原始* .cl文件。

因此,我的问题是:如何在编译应用程序时以最方便,最简单的方式将OpenCL代码转换为C字符串,然后由应用程序使用?有什么方法可以使用C预处理器来完成它,还是我需要运行Python,Perl或类似脚本来完成这项工作?

2 个答案:

答案 0 :(得分:0)

请记住,可能会生成 C代码。您可以生成包含数组初始化的C代码。

因此您可以拥有一个(甚至可以找到一些现有的)实用程序,该实用程序可以生成一些C代码,例如

0x23, 0x34, 0x02, 0x33,

,并对该文件使用#include。另请参见this答案。

该实用程序可以是简单的C程序,简单的Python脚本或某些Unix pipeline(将hdodcutawk组合在一起,或者sed等)。

您最好适当地配置build automation工具,以便在需要时重新生成此类标头。如果您使用make,则只需在Makefile中添加几行(一些配方)。

答案 1 :(得分:0)

它将不是C字符串,而只是字节数组。 C字符串是以零结尾的字符序列。

使用在线工具将二进制文件转换为C数组,例如http://tomeko.net/online_tools/file_to_hex.php?lang=en