【问题标题】:How to change this into a preprocessor macro如何将其更改为预处理器宏
【发布时间】:2021-10-17 06:26:00
【问题描述】:

我有这个语句,我想以宏的形式改变它:

int *arr; <br>
int T;
cudaMalloc( &arr, sizeof(int) * (1+T) );

我做了类似的事情,但这在程序中不起作用。

#define fun(a,b,c) cudaMalloc( (a), sizeof( b) * (1+ c));

如何做到这一点?

【问题讨论】:

  • 你是如何调用那个宏的?
  • 最后的;应该被删除。

标签: c cuda c-preprocessor


【解决方案1】:

这行得通:

#define CUDA_MALLOC(a, b, c) (cudaMalloc( (a), sizeof(b) * (1 + (c)) ))
// other code
cuda_ret = CUDA_MALLOC(&arr, float, no_elements);

注意在行尾缺少分号和额外的括号以防止因运算符优先级导致的问题。

顺便说一句,我不认为使用这些宏是一个好习惯。

【讨论】:

    猜你喜欢
    • 2012-05-27
    • 1970-01-01
    • 2015-04-15
    • 2015-07-31
    • 1970-01-01
    • 2010-09-19
    • 2020-02-09
    • 1970-01-01
    相关资源
    最近更新 更多