1

在编译基于 IOKit 的内核扩展时,c++ 编译器无法识别关键字decltype.

int f = 123; 
int (*f_ptr)() = 0; 

f_ptr =  (decltype(f_ptr)) f;

编译器在上面的代码上失败,原因是:Use of undeclared identifier 'decltype'auto另一方面,关键字按预期工作。

但是,如果我在 C++ 用户模式应用程序中编译完全相同的代码,它工作正常。

知道为什么吗?

4

1 回答 1

2

decltype需要 C++11 支持。查看您的项目构建设置并确保C++ 语言方言至少为GNU++11/C++11或更高版本(搜索 -std= 选项)

auto另一方面是在 C++11[ 6 ]中重用的旧存储持续时间说明符关键字。

于 2018-02-21T13:47:39.290 回答