如何将其更改为预处理器宏
How to change this into a preprocessor macro
我有这个语句,我想以宏的形式改变它:
int *arr; <br>
int T;
cudaMalloc( &arr, sizeof(int) * (1+T) );
我做了类似的事情,但这在程序中不起作用。
#define fun(a,b,c) cudaMalloc( (a), sizeof( b) * (1+ c));
如何做到这一点?
这个有效:
#define CUDA_MALLOC(a, b, c) (cudaMalloc( (a), sizeof(b) * (1 + (c)) ))
// other code
cuda_ret = CUDA_MALLOC(&arr, float, no_elements);
请注意行末缺少分号和额外的括号以防止运算符优先级导致的问题。
附带说明一下,我不认为使用这些类型的宏是一种好的做法。
我有这个语句,我想以宏的形式改变它:
int *arr; <br>
int T;
cudaMalloc( &arr, sizeof(int) * (1+T) );
我做了类似的事情,但这在程序中不起作用。
#define fun(a,b,c) cudaMalloc( (a), sizeof( b) * (1+ c));
如何做到这一点?
这个有效:
#define CUDA_MALLOC(a, b, c) (cudaMalloc( (a), sizeof(b) * (1 + (c)) ))
// other code
cuda_ret = CUDA_MALLOC(&arr, float, no_elements);
请注意行末缺少分号和额外的括号以防止运算符优先级导致的问题。
附带说明一下,我不认为使用这些类型的宏是一种好的做法。