请教 C 语言 宏定义的作用域

来源:百度知道 编辑:UC知道 时间:2024/03/29 16:17:54
有如下代码
aa()
{……}
bb()
{……}
cc()
{……}
dd()
{……}
#define PI 3.13159265
main()
{……}
#undef PI
用#define定义的PI,在函数aa(),bb(),cc(),dd()里面,有效吗?

宏 从定义开始到#undef为止有效,这是在编译的时候用到的.
如果你希望它在aa(),bb()等等有效的话,在用到这些之前定义它,并且不要解除定义

这样定义从aa到dd都不能直接用PI了。正确定义是
#define PI 3.13159265
aa()
{……}
bb()
{……}
cc()
{……}
dd()
{……}
main()
{……}
#undef PI

如果在main中用到了aa(),bb()……,当然是有用的了

定义了宏以后,一直到解除定义(UNDEF)都有效,你在主函数中使用的函数同样对宏有效.