首页
学习
活动
专区
工具
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是非常容易理解的,这个属性的含义就是标明某个函数一定不会返回。 请看下面的例子程序: // 正确,函数将永远不会返回。...所以,在编译的时候,编译器会针对func2报告如下错误: noreturn.cpp: In function 'void func2(bool)': noreturn.cpp:11:1: warning...另外,[[noreturn]]只要函数最终没有返回都是可以的,比如用exit()调用直接将程序干掉的程序也是可以被编译器接受的行为(只是暂时没想到为啥要这么干)。...cout << "一个char和两个[[no_unique_address]]空类大小:" << sizeof(Z2) << std::endl; } 编译之后,我们运行程序可以得到如下结果(这个例子是在Linux

55720

ARM64 的多核启动流程分析

代码版本 boot-wrapper-aarch64 version : 28932c41e14d730b8b9a7310071384178611fb32 linux v5.14 多核 CPU 的启动方式...嵌入式系统的启动的基本流程是先运行 bootloader ,然后由 bootloader 引导启动 kernel,这里无论启动的是 rt-thread 或者是 linux 原理都是一样的。...boot method 6 * @is_entry: when true, pass boot parameters to the kernel, instead of 0 7 */ 8void __noreturn...watch 35 * @invalid: value of an invalid address, 0 or -1 depending on the boot method 36 */ 37void __noreturn...包括但不限于:C/C++,Arm, Linux,Android,人工智能,单片机,树莓派,等等。在上面的【人人都是极客】公众号内回复「peter」,即可免费获取!!

2.1K50
领券