当前位置: 首页 > news >正文

中山手机网站建设电话工控机软件开发工具

中山手机网站建设电话,工控机软件开发工具,代做百度关键词排名,怎么做自己的网站赚钱文章目录前言弃值表达式nodiscard标记符函数非弃值声明类/枚举类/结构 非弃值声明返回类引用与类指针前言 在C 17中引入了一个标记符nodiscard#xff0c;用于声明一个 “非弃值(no-discard)表达式”。那么在开始之前#xff0c;我们需要了解一下什么是弃值表达式。 弃值表… 文章目录前言弃值表达式nodiscard标记符函数非弃值声明类/枚举类/结构 非弃值声明返回类引用与类指针前言 在C 17中引入了一个标记符nodiscard用于声明一个 “非弃值(no-discard)表达式”。那么在开始之前我们需要了解一下什么是弃值表达式。 弃值表达式 弃值表达式就是放弃获取返回值的表达式。首先弃值表达式的返回值是非void类型的。一般我们使用的弃值表达式其返回值只是起次要的作用而其本身的作用占主要。比如i;就是一个弃值表达式它的主要作用就是累加但同时我们也可以选择获取其累加的返回值只不过这是次要的。 再比如C标准库的文件写入函数其声明如下 int __cdecl fputs(const char * __restrict__ _Str,FILE * __restrict__ _File);它有一个int类型的返回值用于获取写入状态它的主要作用是写入文件我可以选择不获取状态也可以选择获取状态 fputs(Hello World,pFile); int result fputs(Hello World,pFile);nodiscard标记符 那么我如果想向用户建议获取返回值这时候我就可以使用nodiscard标记符。它一般用于标记函数的返回值或者某个类。声明语法为 /* since C17 */ [[nodiscard]] return_type function(); /* since C20 */ [[nodiscard(message)]] return_type function(); /* Standard lib defination */ /* #if __cplusplus 201703L# define _GLIBCXX_NODISCARD [[__nodiscard__]]#else# define _GLIBCXX_NODISCARD#endif */ _GLIBCXX_NODISCARD return_type function();如果一个被nodiscard标记了的表达式如果我们在使用时弃值了而且没有使用static_castvoid将其转化为void时编译器会抛出warning来提醒用户获取返回值。 函数非弃值声明 [[nodiscard]] int func1(){return 1; }[[nodiscard(nodiscared function)]] int func2(){return 1; }int main(){func1(); //warning C17func2(); //warning c20int a func1(); //no warningstatic_castvoid(func1()); //no warning }结果如下 类/枚举类/结构 非弃值声明 class [[nodiscard]] A{}; enum class [[nodiscard]] B{X,Y}; struct [[nodiscard]] C{};A createA(){return A(); }B createB(){return B::X; }C createC(){return C(); }int main(){createA();createB();createC(); }输出如下 6.cpp: In function int main(): 6.cpp:22:12: warning: ignoring returned value of type A, declared with attribute nodiscard [-Wunused-result]22 | createA();| ~~~~~~~^~ 6.cpp:10:3: note: in call to A createA(), declared here10 | A createA(){| ^~~~~~~ 6.cpp:6:21: note: A declared here6 | class [[nodiscard]] A{};| ^ 6.cpp:23:12: warning: ignoring returned value of type B, declared with attribute nodiscard [-Wunused-result]23 | createB();| ~~~~~~~^~ 6.cpp:14:3: note: in call to B createB(), declared here14 | B createB(){| ^~~~~~~ 6.cpp:7:26: note: B declared here7 | enum class [[nodiscard]] B{X,Y};| ^ 6.cpp:24:12: warning: ignoring returned value of type C, declared with attribute nodiscard [-Wunused-result]24 | createC();| ~~~~~~~^~ 6.cpp:18:3: note: in call to C createC(), declared here18 | C createC(){| ^~~~~~~ 6.cpp:8:22: note: C declared here8 | struct [[nodiscard]] C{};| ^返回类引用与类指针 当返回值为引用或者指针的 类/枚举类/结构函数不行 时nodiscard 就无效了 class [[nodiscard]] A{};A createAref(){A* a new A();return *a; }A* createAptr(){A* a new A();return a; }int main(){createAref(); //no warningcreateAptr(); //no warning }
http://www.hkea.cn/news/14447260/

相关文章:

  • 商城网站开发方案婚纱网站建设规划书
  • 网站开发组织架构图他达拉非能延时多久
  • 网站建设银川重庆今天特大新闻
  • 专业的网站开发服务商大连做网站开发的公司
  • 网站制作的文章网站建设域名注册
  • 公司怎么做网站需要多少钱专注南京网站建设
  • 12306网站建设团队建设网站要做的工作
  • 济南网站制作软件轻淘客网站模板
  • 如何使用爱站网asp网站首页模板
  • 用c 来建设网站网站开发周记
  • 住房和城乡建设部网站杂志广告传媒公司取名
  • 旧版wordpress百度seo报价
  • 上海网站建设服务框架重庆承越网站建设公司
  • 网页设计尺寸pc端长沙网站优化联系方式
  • 网站内容规划模板本地生活网
  • 优惠活动制作网站php网站开发培训
  • 苏州网站建设科技有限公司手机电脑网站排名
  • 直播网站怎么做的深圳龙岗邮编
  • 购物网站开发的描述二手房交易注意事项
  • 基层建设论文查询官方网站网站优化网站建设公司
  • 建设网站基本步骤网站排名优化怎样做
  • 凡科网站建设怎么去掉极速建站wordpress导航菜单居中
  • 增城高端网站建设国内著名设计公司
  • 百度网站建设费用多少知乎网页游戏开服
  • 九江专业网站建设济南网站建设找聚搜网络
  • 没有网站也可以做cpa精品网络小说
  • 长裕建设有限公司网站房子装修风格大全2021新款
  • 有哪些做ppt的网站有哪些公司地址变更
  • 局域网网站建设教程福建省第二电力建设公司网站
  • angularjs 网站模板十大购物app排行榜