nullptr类型的宏返回值与函数类型不匹配
Macro return value of type nullptr does not match function type
我想做的是:
if (foo)
return SET_ERROR_AND_RETURN_NULL(ERROR_HERE);
使用…#define SET_ERROR_AND_RETURN_NULL(error)
lastError = error;
return nullptr;
这样以后我就可以…
if (GetMyLastError() == ERROR_HERE) { foo }
然而,我得到"Return value type does not match the function type."
只是定义SET_ERROR_AND_RETURN_NULL作为nullptr工作当然,所以我猜它与类型如何与宏一起工作有关?
我也试图这样做,因为我希望保持if语句返回一行,而不需要在那里设置lastError
。
文本替换显示错误。
if (foo)
return SET_ERROR_AND_RETURN_NULL(ERROR_HERE);
就变成:
if (foo)
return lastError = ERROR_HERE;
return nullptr;
解析为
if (foo)
return lastError = ERROR_HERE;
return nullptr;
现在return lastError = ERROR_HERE
将返回错误(因为=
操作符的返回值),这可能不是您的方法的返回类型。它是一个宏,而不是一个函数,所以它被文本替换:如果你从宏返回,你将直接从宏展开的代码返回。
这就是为什么当你可以避免使用它们时不应该使用它们的原因,在这里static
方法就足够了。
相关文章:
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 将C++子类成员函数(虚拟实现)传递给 C 类型函数指针
- C++ 这里有一个返回 (24) 的布尔返回类型函数
- 使用SFINAE来检测void返回类型函数的存在
- 使用此类型函数有什么优势
- 为什么此函数通过类型函数指针调用后,呼叫明智地行为
- 如何使用无类型函数指针调用C++成员函数
- 模板返回类型函数如何在C++中工作
- 具有通用类型函数的动态库[C ]
- 如何在返回类型函数模板的专用化中使用派生类型?( "couldn't infer template argument" )
- Bon appetit :从 int 返回类型函数在 main() 中打印字符串
- 对于需要其他模板参数的类型函数的部分模板专业化
- c++错误的参数类型-函数指针
- 延迟评估模板类型函数
- 在引用或指针返回类型函数上输入
- 具有指针数据类型的非类型函数模板参数
- STL中使用的C++自定义比较类型(函数谓词与较少结构)
- C++模板基类的非类型函数模板的 using 声明
- 字符串到类型函数,模板专用化使调用统一
- 自由类型函数可以接受 Unicode 文件名吗?