[[nodisc++ard]]用于提醒开发者不要忽略函数返回值,尤其在错误码、资源管理等关键场景。使用情况包括:1.返回错误码的函数;2.返回操作成功与否的布尔值;3.返回资源句柄或指针的函数。正确用法是在函数声明前加[[nodiscard]],也可置于返回类型前(c++20起),注意只需加在声明处。注意事项:1.它只是警告而非错误;2.应避免滥用;3.可用(void)显式忽略返回值。合理使用能提升代码健壮性,减少潜在bug。

C++17引入了
[[nodiscard]]
[[nodiscard]]

如果你写的函数返回了一个很重要的值,比如错误码、布尔状态、指针或结果值,而这个值一旦被忽略可能会导致逻辑错误或者资源泄漏,那就可以考虑给这个函数加上
[[nodiscard]]
举个典型的例子:
立即学习“C++免费学习笔记(深入)”;

[[nodiscard]] bool open_file(const std::string& path);
如果有人这样调用:
open_file("config.txt"); // 忽略返回值编译器就会提示类似“忽略带有nodiscard属性的返回值”的警告。

常见适合加
nodiscard
errno
使用方式很简单,直接在函数声明前加上
[[nodiscard]]
基本语法如下:
[[nodiscard]] int calculate_result();
或者带返回类型的写法(C++20起):
int [[nodiscard]] calculate_result();
注意:只加在函数声明上即可,不需要在定义处重复加。
还可以配合枚举类型一起使用,比如:
enum class [[nodiscard]] ErrorCode { Success, FileNotFound, PermissionDenied };
ErrorCode load_config();这样可以对特定类型强制启用nodiscard机制。
虽然
nodiscard
void()
(void)open_file("test.txt");[[nodiscard]]
基本上就这些,用起来也不难,但确实容易被人忽略。
以上就是C++17的nodiscard属性有什么用 防止返回值被忽略的标记方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号