首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Visual 2017 msvc与nvcc __cplusplus宏失配

Visual 2017 msvc与nvcc __cplusplus宏失配
EN

Stack Overflow用户
提问于 2018-09-13 10:01:00
回答 1查看 500关注 0票数 0

我正在使用VisualStudio2017,平台工具集v141和CUDA工具包9.2。我注意到在用nvcc编译thrust::device_vector时,移动构造函数和移动分配不存在。原因是检查推力库中的__cplusplus宏的值的条件。

正如在/Zc:__cplusplus中所解释的,我将C++语言标准设置为/std:c++17,并另外设置了/std:c++17,以便在msvc中正确定义宏,即201703。但是,对于nvcc编译的文件,宏设置为199711

我创造了一个简单的案例来再现这个问题。

test.cuh:

代码语言:javascript
复制
#pragma once
#include <iostream>
void test();

test.cu:

代码语言:javascript
复制
#include "test.cuh"
void test()
{
    std::cout << "CU  file: " << __cplusplus << std::endl;
}

main.cpp:

代码语言:javascript
复制
#include "test.cuh"
int main()
{
    test();
    std::cout << "CPP file: " << __cplusplus << std::endl;
    return 0;
}

产出:

代码语言:javascript
复制
CU  file: 199711
CPP file: 201703

我正在寻找一个解决方案,也适用于CMake与FindCUDA。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52311304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档