结构体初始化测试
最近在看Asterisk的源代码,收获不小,决定记录下来学习Asterisk过程中的点滴,分享给大家,也方便我以后查阅……
今天让我感到意外的是Asterisk中对结构体初始化(或者说成是赋值)的使用。
比如定义结构体如下:
typedef struct ST {
int a;
int b;
pFun fun;
}ST;
一般的初始化是这样的:
ST t2;
t2.a=4;
t2.b=5;
t2.fun=test2;
而我在源码中看到的是这样的:
ST t1 = {.a=1,.b=2,.fun=test1};
感觉好强大。。。。。。
这里是我仿照着写的完整代码:
1 #include <stdio.h> 2 3 typedef void (*pFun)(int a); 4 5 typedef struct ST { 6 int a; 7 int b; 8 pFun fun; 9 }ST; 10 11 void test1(int a) 12 { 13 printf("test1 : %d\r\n",a); 14 } 15 16 void test2(int a) 17 { 18 printf("test2 : %d\r\n",a); 19 } 20 21 int main() 22 { 23 ST t1 = { 24 .a=1, 25 .b=2, 26 .fun=test1 27 }; 28 29 printf("%d\t%d\n",t1.a,t1.b); 30 t1.fun(3); 31 32 ST t2; 33 t2.a=4; 34 t2.b=5; 35 t2.fun=test2; 36 37 printf("%d\t%d\n",t2.a,t2.b); 38 t2.fun(6); 39 40 return 0; 41 }
这里存盘为test20120608.c,进行如下操作:
make test20120608 && ./test20120608
测试结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)