【发布时间】:2013-08-23 19:54:23
【问题描述】:
我正在尝试在 OpenCL 内核中创建透明的调试 prtin 函数:
- 不污染代码(最多可调用一行)。
- 如果指定的预处理器条件被证明不正确,则编译掉。
问题是,printf 是一个可变参数函数,我不能将它包装在可变参数宏中,因为 OpenCL 内核语言(C99 派生)不支持可变参数宏。
#if DEBUG_CONDITION
printf("Any int %d\n",i);
#endif
可行,但会很快使代码变得不可读。
if(DEBUG_CONDITION) printf("Any int %d\n",i);
这也可以,但需要我启用 printf pragma,因为代码中实际引用了所需的函数,即使我知道它们会被编译掉。 (从 OpenCL 2.0 开始,printf 将定义同步属性,在实际删除函数之前,无法确定是否将同步语义引入二进制文件。)
PRINTF("Any int %d\n",i);
我正在寻找类似(或类似)的东西,看起来不错,但可以完全忽略对 prtintf 的引用。
【问题讨论】:
-
PRINTF(("any int %d", i))这样的东西怎么样?