Linux c括号作用域【原创笔记】

简介: 大师指点后,所做的笔记,很感谢一起愿意研究技术的同事,以下不是本人原创,是他分析的成果#include #include struct lock_class_key { int ck; }; #define mutex_init() ...
大师指点后,所做的笔记,很感谢一起愿意研究技术的同事,以下不是本人原创,是他分析的成果

#include <stdio.h> #include <time.h> struct lock_class_key { int ck; }; #define mutex_init() \ do { \ static struct lock_class_key __key; \ static int a; \ \ printf("macro==>>Line=%d,&__key=0x%p &a=0x%p\n", __LINE__, &__key, &a); \ } while (0) void __mutex_init() { do { static struct lock_class_key __key1; static int a1; printf("function==>>Line=%d,&__key1=0x%p &a1=0x%p\n", __LINE__, &__key1, &a1); } while (0); } int main(void) { //do { static struct lock_class_key __key; static int a; printf("macro==>>Line=%d,&__key=0x%p &a=0x%p\n", 28, &__key, &a); } while (0);===>宏展开就是这样的,gcc -E -o test.i test.c //do { static struct lock_class_key __key; static int a; printf("macro==>>Line=%d,&__key=0x%p &a=0x%p\n", 29, &__key, &a); } while (0); //{ static struct lock_class_key __key; static int a; printf("macro==>>Line=%d,&__key=0x%p &a=0x%p\n", 28, &__key, &a); } //{ static struct lock_class_key __key; static int a; printf("macro==>>Line=%d,&__key=0x%p &a=0x%p\n", 29, &__key, &a); } {static int b1;} //=======>这种括号是作用域,一个函数名本来只有一个作用域,但是如果函数里面加了这种,相当于是在两个作用域里面,是允许这样定义的,地址也会不同 //printf("fuck!!\n"); {static int b1;} mutex_init(); mutex_init(); __mutex_init(); __mutex_init(); return (0); } 执行结果: macro==>>Line=37,&__key=0x0x60104c &a=0x0x601050 macro==>>Line=38,&__key=0x0x601054 &a=0x0x601058 function==>>Line=21,&__key1=0x0x601044 &a1=0x0x601048 function==>>Line=21,&__key1=0x0x601044 &a1=0x0x601048

 

【作者】 张昺华
【新浪微博】 张昺华--sky
【twitter】 @sky2030_
【facebook】 张昺华 zhangbinghua
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
目录
相关文章
|
8月前
|
机器学习/深度学习 数据可视化 PyTorch
PyTorch FlexAttention技术实践:基于BlockMask实现因果注意力与变长序列处理
本文介绍了如何使用PyTorch 2.5及以上版本中的FlexAttention和BlockMask功能,实现因果注意力机制与填充输入的处理。通过attention-gym仓库安装相关工具,并详细展示了MultiheadFlexAttention类的实现,包括前向传播函数、因果掩码和填充掩码的生成方法。实验设置部分演示了如何组合这两种掩码并应用于多头注意力模块,最终通过可视化工具验证了实现的正确性。该方法适用于处理变长序列和屏蔽未来信息的任务。
318 17
|
9月前
|
传感器 机器学习/深度学习 人工智能
AI在自动驾驶汽车中的应用与未来展望
AI在自动驾驶汽车中的应用与未来展望
482 9
|
10月前
|
编解码 前端开发 UED
深度揭秘:前端工程师如何玩转响应式设计,打造完美用户体验!
随着移动互联网的普及,响应式设计(RWD)成为前端开发的重要技术,旨在使网站适应不同设备的屏幕尺寸。本文介绍响应式设计的核心概念,如流式布局、弹性图片和CSS3媒体查询,并探讨如何利用这些技术及框架(如Bootstrap)构建美观实用的网站,同时关注性能优化、可访问性和SEO。
157 3
|
10月前
|
机器学习/深度学习 人工智能 搜索推荐
AI在医疗健康领域的应用与前景
随着科技的不断进步,人工智能(AI)技术已经深入到我们生活的方方面面,特别是在医疗健康领域。本文将探讨AI在医疗健康领域的应用现状、面临的挑战以及未来的发展前景。
在Win10中、如何把常用的应用添加到高效工作窗口呢?
这篇文章提供了两种方法来在Windows 10系统中将常用应用程序添加到高效工作窗口,包括通过开始菜单固定应用和直接从软件安装位置创建快捷方式,并介绍了如何调整图标大小和位置。
在Win10中、如何把常用的应用添加到高效工作窗口呢?
|
机器学习/深度学习 数据采集 数据可视化
基于机器学习的一线城市租房价格预测分析与实现,实现三种算法预测
本文通过数据采集、处理、特征选择和机器学习建模,对一线城市租房价格进行预测分析,比较了随机森林、一元线性回归和多元线性回归模型,并发现随机森林模型在预测租房价格方面表现最佳,为租房市场参与者提供决策支持。
390 0
|
开发者
阿里云2024年上云采购季活动云服务器优惠价格表参考
3月1日,阿里云正式上架了2024年的上云采购季活动,云服务器优惠价格表也随之出炉了,2024年的上云采购季活动中云服务器价格最低是2核2G配置,仅需99元1年,每天仅需0.27元;2核4G配置199元1年,每天只要0.54元。轻量应用服务器2核2G配置最低61元1年,2核4G配置最低165元1年。如果是选择月付的话,最低26.52元可购买一台4核16G配置,100G ESSD Entry云盘,10M带宽的经济型e实例云服务器。下面小编整理汇总的此次上云采购季活动用户可以购买到的具体云服务器配置及价格,以表格形式展示给大家,以供参考选择。
424 0
阿里云2024年上云采购季活动云服务器优惠价格表参考
OFDM SYMBOL的概念及其速率
OFDM SYMBOL的概念及其速率
417 1
|
存储 数据挖掘 Windows
服务器数据恢复—异常断电导致raid信息丢失的数据恢复案例
由于机房多次断电导致一台服务器中raid阵列信息丢失。该阵列中存放的是文档,上层安装的是Windows server操作系统,没有配置ups。 因为服务器异常断电重启后,raid阵列可以正常使用,所以未引起管理员的注意。后续出现的多次异常断电导致raid报错,服务器无法找到存储设备,进入raid管理模块进行任何操作都会导致操作系统死机。管理员尝试多次重启服务器,故障依旧。
|
安全 网络安全 数据库
信息安全十大原则
【2月更文挑战第29天】该文提出了保障信息安全的十大关键原则.