假设我想编写一组看起来非常相似但执行不同任务的静态方法。不是两次写入类似的函数,而是编写一个并将内容复制并粘贴到另一个中更容易。
问题是这些方法为其功能使用不同的头文件。一个这样的函数对可能如下所示:
__global__ void D_sin(double* result, double x) {result[0]=sin(x);}
/*MACHINE*/ void H_sin(double* result, double x) {result[0]=sin(x);}
第一个应使用#include "device_functions.h"
,第二个应使用#include <cmath>
。例如,NVCC
实际上可能足够聪明,可以正确解析__global__
和__device__
函数,但我仍然对一般解决方案感兴趣。
我想将这些方法保存在同一个文件中,因为编辑多个文件会非常快速地混淆。
所以问题是,我该怎么做:
namespace a{
#include "someheader.h"
void a(double* a) {...;}
void b(double* a, double x) {...;}
void c(double* a, double x) {...;}
void d(double* a, double* b, double x) {...;}
#stopinclude "someheader.h"
}
namespace b{
#include "anotherheader.h"
void a(double* a) {...;}
void b(double* a, double x) {...;}
void c(double* a, double x) {...;}
void d(double* a, double* b, double x) {...;}
#stopinclude "anotherheader.h"
}
我最初的做法是
namespace someh {
#include "someheader.h"
}
...
someh::...
{
using namespace someh;
}
但我无法获得一致的结果。