以下代码
#define CUDA_BOTH __host__ __device__
struct array {
CUDA_BOTH inline array() {} // LINE1
CUDA_BOTH inline array(double* d) : _data(d) {}
double* _data;
};
struct test_t {
array x1;
array x2; // LINE2
};
struct mytest_t : public test_t {
};
__constant__ test_t g_test; // LINE3
__constant__ mytest_t g_mytest; // LINE4
int main(){
return 0;
}
无法编译并显示错误
error: dynamic initialization is not supported for a __constant__ variable
在LINE4
上。显然问题出在LINE1
上。但是,我在那里允许空构造和带参数的构造函数。
奇怪的行为是,即使LINE3
只是从mytest_t
继承而没有添加任何字段,test_t
上的定义也不会给出任何错误。
此外,如果我评论LINE2
,一切正常!
有没有办法使这项工作有效?还是有人可以解释不一致的行为?