老铁们,大家好,相信还有很多朋友对于封装网站源码分享和封装库网站的相关问题不太懂,没关系,今天就由我来为大家分享分享封装网站源码分享以及封装库网站的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
printf(&34;);\nprintf(&34;);
我们首先想到的是这样的写法:
34;Hello&34;World!\\n&34;failed!&34;Hello&34;World!\\n&34;failed!”);
编译器会由于找不到与else匹配的if而报错。
如果我们将MY_PRINT换一种写法,加上{},则又会带来一个新的问题,调用MY_PRINT时不能加上分号,否则依旧会报错。
新写法导致MY_PRINT不能使用分号
在linux源码中,解决上述问题的方法是采用do-while语句进行宏封装,下面是linux源码中的一个例子:
linux源码中do-while封装宏示例
代码分析:用do-while(0)封装起来的代码,首先会执行一次,由于while的判断条件是0,确保了被封装的代码不会循环。do-while封装起来的代码形成一个代码段,所以用在if语句中,可以无需额外加上{}。最后,在C语法上do-while语句的末尾需要加上分号,所以封装后的宏在使用时也需要加上分号,这样,使用do-while封装的宏在使用上就与单条语句无异。
下面使用do-while封装MY_PRINT宏,并测试:
使用do-while封装MY_PRINT宏
关于封装网站源码分享到此分享完毕,希望能帮助到您。
