1. 不只有一个 expression 的 macro
2. 使用 code block 解决会发生什麽问题?
3. do-while
的写法
4. 参考资料
如果以下的两个 expression 想要写成 macro:
gets(s);
puts(s);
可以被定义成:
#define ECHO(s) (gets(s), puts(s))
如果写成这样会有问题:
// buggy !
#define ECHO(s) { gets(s); puts(s); }
问题在於使用 if-else
语法时如果写成
if (echo_flag)
ECHO(str);
else
gets(str);
会变成
if (echo_flag)
{ gets(s); puts(s); };
else
gets(str);
这样了话 if
会跟 else
接不上,error
当然也可以写成把ECHO(str);
的分号删掉,这样就没问题了,
不过程序码会变得很奇怪:
if (echo_flag)
ECHO(str)
else
gets(str);
do-while
的写法写成这样比较漂亮,因为 do-while
後面本来就需要加分号,
所以前面的问题都可以解决:
#define ECHO(s) \
do { \
gets(s); \
puts(s); \
} while(0)
C Programming: A Modern Approach, 2/e
<<: Day21 - LINE Flex Message 文件导读
在上一篇我们已经知道MVC路由和静态资源导入的方式 因此起手式 从新增专案.net core空专案到...
其实今年才刚学Vue.js ,目前的程度大概就是写几个简单的功能而已,要写一个比较完整的网站还是十分...
今天先来规划一下後续的系统架构 先用文字版 等做完了再补上图片 首先使用者进入会先到首页 首页 使用...
这篇想和大家介绍如何将HTML的内容传送到PHP 因为HTML呈现的是网页的画面,若想做些运算或储存...
17King 制造中,订阅一下吧(*´∀`)~♥ 今日影片长度:21 分 05 秒 本集重点条列: ...