【发布时间】:2019-05-27 03:55:30
【问题描述】:
尝试编译这段代码时:
#define _USE_MATH_DEFINES
#include <cmath>
#include <cstdio>
void minimal_example(){
int i=2;
if(i==3 or i==4) printf("I want %d!\n",M_PI);
}
使用
nvcc -x cu -Xcompiler=/permissive- -dc cuda_nvcc_cl_test.cu -o cuda_nvcc_cl_test.obj
我收到以下错误(第 7 行):
error: expected a ")"
error: identifier "M_PI" is undefined
我正在使用带有 Visual Studio 的 cl.exe(x64 版本 19.16.27031.1)和 CUDA 工具包 10.1 的 Windows 10。
将cmath 替换为math.h 并将or 替换为||(或者添加#include <ciso646>)时,错误消失。但是,是否有一些编译器选项或其他可能性,以便我可以保持代码不变?
还有为什么-Xcompiler=/permissive- 没有帮助?
【问题讨论】:
-
M_PI也在cmath中通过包含math.h定义