首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++0x 通用属性

不同编译器有不同的属性语法,比如对于GNU ,属性是通过关键字__attribute__来声明的,常见的有format、noreturn、const和aligned等,申明语法如下: __attribute...2.2[[ noreturn ]] [[ noreturn ]]用于标识不会返回的函数。不会返回的函数指的是被调处后面的代码不会执行,被调函数不会将控制流返回给主调函数,注意不是没有返回值的函数。...除了抛出异常可能会导致程序控制流不能返回调用者外,其它诸如包含终止应用程序或者无限循环语句的函数,都可以使用[[noreturn]]进行申明,比如C++11标准库中,我们可以看到如下函数申明语句: [[...noreturn]] void abort(void) noexcept; 当然,[[noreturn]]可以帮助编译器进行代码优化,前提是正确使用。...如果错误地使用[[noreturn]]可能会给程序带来致命损害,因此要小心翼翼。

87020
您找到你想要的搜索结果了吗?
是的
没有找到

谈谈C++新标准带来的属性(Attribute)

比如[[noreturn]必须出现在函数定义的位置才会产生效果,如果出现在某个变量的声明处则无效。...1 [[noreturn]] 从字面意义上来看,noreturn是非常容易理解的,这个属性的含义就是标明某个函数一定不会返回。 请看下面的例子程序: // 正确,函数将永远不会返回。...[[noreturn]] void func1() { throw "error"; } // 错误,如果用false进行调用,函数是会返回的,这时候会导致未定义行为。...所以,在编译的时候,编译器会针对func2报告如下错误: noreturn.cpp: In function 'void func2(bool)': noreturn.cpp:11:1: warning...另外,[[noreturn]]只要函数最终没有返回都是可以的,比如用exit()调用直接将程序干掉的程序也是可以被编译器接受的行为(只是暂时没想到为啥要这么干)。

55520
领券