在编译基于 IOKit 的内核扩展时,c++ 编译器无法识别关键字decltype
.
int f = 123;
int (*f_ptr)() = 0;
f_ptr = (decltype(f_ptr)) f;
编译器在上面的代码上失败,原因是:Use of undeclared identifier 'decltype'
。auto
另一方面,关键字按预期工作。
但是,如果我在 C++ 用户模式应用程序中编译完全相同的代码,它工作正常。
知道为什么吗?
在编译基于 IOKit 的内核扩展时,c++ 编译器无法识别关键字decltype
.
int f = 123;
int (*f_ptr)() = 0;
f_ptr = (decltype(f_ptr)) f;
编译器在上面的代码上失败,原因是:Use of undeclared identifier 'decltype'
。auto
另一方面,关键字按预期工作。
但是,如果我在 C++ 用户模式应用程序中编译完全相同的代码,它工作正常。
知道为什么吗?
decltype
需要 C++11 支持。查看您的项目构建设置并确保C++ 语言方言至少为GNU++11/C++11或更高版本(搜索 -std= 选项)
auto
另一方面是在 C++11[ 6 ]中重用的旧存储持续时间说明符关键字。