При попытке скомпилировать этот фрагмент кода:
#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
Я использую Windows 10 с cl.exe для Visual Studio (версия 19.16.27031.1 для x64) и инструментарий CUDA 10.1.
При замене cmath
на math.h
и or
на ||
(альтернативно добавьте #include <ciso646>
), ошибки исчезают. Однако, есть ли какие-то опции компилятора или другие возможности, чтобы я мог сохранить код как есть?
Также, почему -Xcompiler=/permissive-
не помог?