如何#include在C++/CLI项目中使用nullptr的第三方本机C++标头

Wil*_*ers 0 c++ c++-cli nullptr

我正在尝试编写一个托管C++(又名C++/CLI)库,该库链接到第三方本机C++库.第三方库的头文件包含使用该nullptr关键字的构造函数定义.我的托管项目无法编译,因为托管编译器定义nullptr为托管空引用,而第三方使用它来表示本机/未托管空指针.如何在不修改第三方库的头文件的情况下解决此问题?

有关nullptrvs的参考__nullptr,请参阅:https://msdn.microsoft.com/en-us/library/4ex65770.aspx

Mat*_*nen 5

C++/CLI支持与C++相同的预处理程序指令,对吧?这个可怕的黑客怎么样:

#define _ALLOW_KEYWORD_MACROS
#define nullptr __nullptr
#include "header.h"
#undef nullptr
Run Code Online (Sandbox Code Playgroud)

  • 好吧,不太确定你可以责怪微软这个问题.正是那个已经在C++ 11中添加了许多已经在C++/CLI中使用的关键字的狗委员会ISO委员会.像nullptr,enum类,override,final.先锋们背后有箭. (2认同)