注意:这个问题与OpenCL本身无关...检查最后一段以获得我的问题的简洁陈述。但提供一些背景:我正在编写一些使用OpenCL的C++代码。我喜欢将我的OpenCL内核的源代码保存在它们自己的文件中,以简化编码和维护(而不是将源代码直接作为字符串常量嵌入到相关的C++代码中)。这不可避免地会导致在分发二进制文件时如何将它们加载到OpenCL运行时的问题——理想情况下,OpenCL源代码包含在二进制文件中,因此二进制文件不需要位于特定位置在某个目录结构中知道OpenCL源代码在哪里。我想将OpenCL文件作为字符串常量包含在某处,并且最好不使用额外的构建步骤或外部工具(为了跨编译器/跨平
注意:这个问题与OpenCL本身无关...检查最后一段以获得我的问题的简洁陈述。但提供一些背景:我正在编写一些使用OpenCL的C++代码。我喜欢将我的OpenCL内核的源代码保存在它们自己的文件中,以简化编码和维护(而不是将源代码直接作为字符串常量嵌入到相关的C++代码中)。这不可避免地会导致在分发二进制文件时如何将它们加载到OpenCL运行时的问题——理想情况下,OpenCL源代码包含在二进制文件中,因此二进制文件不需要位于特定位置在某个目录结构中知道OpenCL源代码在哪里。我想将OpenCL文件作为字符串常量包含在某处,并且最好不使用额外的构建步骤或外部工具(为了跨编译器/跨平
关闭。这个问题需要更多focused.它目前不接受答案。想要改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion在我们的遗留代码以及现代代码中,我们使用宏来执行代码生成等漂亮的解决方案。我们同时使用#和##运算符。我很好奇其他开发人员如何使用宏来做很酷的事情,如果他们使用宏的话。 最佳答案 在C中,通常定义宏来执行某些操作以获取逐字参数,同时定义能够透明地获取其地址的函数。//couldevaluateatcompiletimeif__builtin_sing
关闭。这个问题需要更多focused.它目前不接受答案。想要改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion在我们的遗留代码以及现代代码中,我们使用宏来执行代码生成等漂亮的解决方案。我们同时使用#和##运算符。我很好奇其他开发人员如何使用宏来做很酷的事情,如果他们使用宏的话。 最佳答案 在C中,通常定义宏来执行某些操作以获取逐字参数,同时定义能够透明地获取其地址的函数。//couldevaluateatcompiletimeif__builtin_sing
我知道:#definefoo4#definestr(s)#swithstr(foo)写出:"foo",因为stringify是先执行文本扩展,但是这样:#definexstr(s)str(s)#definestr(s)#s#definefoo4用xstr(foo)写出:"4".为什么?流程中涉及哪些步骤? 最佳答案 宏扩展的相关步骤是(根据C2011[n1570]6.10.3.1和C++199816.3.1):处理以#或##开头的标记。对每个参数应用宏替换。将每个参数替换为上述宏替换的对应结果。重新扫描更多宏。因此,使用xstr(f
我知道:#definefoo4#definestr(s)#swithstr(foo)写出:"foo",因为stringify是先执行文本扩展,但是这样:#definexstr(s)str(s)#definestr(s)#s#definefoo4用xstr(foo)写出:"4".为什么?流程中涉及哪些步骤? 最佳答案 宏扩展的相关步骤是(根据C2011[n1570]6.10.3.1和C++199816.3.1):处理以#或##开头的标记。对每个参数应用宏替换。将每个参数替换为上述宏替换的对应结果。重新扫描更多宏。因此,使用xstr(f