登錄 |創建賬號 |找回密碼
查看: 67|回復: 0

[通用] c++中[[nodiscard]]是什么意思

[複製鏈接]

23

主題

6

回帖

128

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
128
發表於 2024-4-29 09:47:39 | 顯示全部樓層 |閱讀模式
在C++中,[[nodiscard]] 是一个属性标记,用于告诉编译器在调用函数或方法时,其返回值应该被使用,避免忽略返回值导致的潜在问题或错误。
这个属性可以应用于函数或方法的声明前面,示例代码如下:
  1. #include <iostream>

  2. [[nodiscard]] int getValue() {
  3.     return 42;
  4. }

  5. int main() {
  6.     getValue(); // 在这里调用函数,但忽略了返回值
  7.     // 编译时会产生警告,提示getValue函数的返回值被忽略

  8.     // 正确的用法:
  9.     int result = getValue(); // 将返回值赋给一个变量,或者使用它进行其他操作
  10.     std::cout << "Value is: " << result << std::endl;

  11.     return 0;
  12. }
複製代碼
在上面的示例中,getValue() 函数被声明为 [[nodiscard]],这意味着在调用它时应该使用其返回值。在 main() 函数中,第一次调用 getValue() 时并没有将返回值存储起来或者用于其他操作,这将触发编译器的警告,提醒开发者可能存在逻辑错误或者不良实践。
通过在关键函数或方法前添加 [[nodiscard]] 属性,可以帮助开发者在编译阶段捕获并避免一些潜在的bug。

回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 創建賬號

本版積分規則

Archiver|手機版|小黑屋|九派社區 ( 苏ICP备07501547号-12 )

GMT+8, 2024-5-17 08:56 , Processed in 0.057595 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回復 返回頂部 返回列表