【问题标题】:How to convert C program code into char[]? [duplicate]如何将 C 程序代码转换为 char[]? [复制]
【发布时间】:2019-05-25 12:41:20
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      并在该文件中适当地使用#include。另请参阅this 答案。

      该实用程序可以是一个简单的 C 程序、一个简单的 Python 脚本或一些 Unix pipeline(将 hdodcutawksed 组合在一起......)或别的东西。

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

      【讨论】:

        猜你喜欢
        • 2013-01-10
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 2011-06-06
        • 1970-01-01
        • 2019-09-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多