今天突发奇想,想到这么一个写法
#include <stdio.h> int main() { char c = 'A'; { int a = 1; printf("%d\n", a); printf("%c\n", c); } { int a = 2; printf("%d\n", a); printf("%c\n", c); } return 0; }
编译一下,居然能够编译通过,跑一下,得到输出
1 A 2 A
这个东西有什么用呢,说实在,我也没有见过别人有这种写法,我自己也是脑子一抽筋想到的。
最明显的作用就是缩小变量的作用域,可以避免冲突,另外的话,这种用来区分不用作用的代码块,有助于一个长函数中对代码的阅读,不过,这要求两个代码块之间的变量几乎互相独立,真要这样的话,这个长函数干嘛不拆啊,囧。
突然想到,这种写法,结合 RAII 形式的互斥锁,是可以达到规划临界区的目的的