摘要:
转载自 norbe的专栏static 声明的变量在C语言中有两方面的特征: 1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。 2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。Tips: A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度; B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度; C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题; ... 阅读全文
摘要:
原文:点击打开链接object-like宏 和 function-like但没有参数的宏,或macro body 有 #(stringified ) or ##(pasted) 的macro, 只执行一遍扫描(simple scan)。否则就要执行两遍扫描。两遍扫描:prescan: 对参数进行扫描,并对可以展开的参数进行完全的宏展开。second scan: 用展开后的参数,对宏体进行展开,对展开后的结果 递归进行 完全的宏展开。一遍扫描举例:object-like宏: #define no_param hah no_param ==> hahfunction-like宏,含... 阅读全文