C定义预处理器的范围
发布时间:2020-12-16 05:31:33 所属栏目:百科 来源:网络整理
导读:#define的范围直到文件结尾.但是从哪里开始. 基本上我试过下面的代码. #includestdio.h #includestdlib.h #define pi 3.14 void fun(); int main(){ printf("%f n",pi); #define pi 3.141516 fun();return 0;}void fun(){printf("%f n",pi);} 上面的程序的
#define的范围直到文件结尾.但是从哪里开始.
基本上我试过下面的代码. #include<stdio.h> #include<stdlib.h> #define pi 3.14 void fun(); int main() { printf("%f n",pi); #define pi 3.141516 fun(); return 0; } void fun(){ printf("%f n",pi);} 上面的程序的输出是出来的 3.140000 3.141416 考虑到主要的预处理,pi的值应为3.141516 解决方法
C预处理器通过文件从顶部到底部运行,并处理#define语句,如荣耀的复制和粘贴操作.一旦遇到#define pi 3.14的行,它就会用3.14替换字pi的每一个实例.预处理器不处理(甚至通知)C语言范围设定机制,如括号和大括号.一旦看到#define,那个定义才有效,直到文件的末尾到达,宏将被#defef定义,或者(在这种情况下),宏被另外一个#define语句重新定义.
如果你想要遵循C范围规则的常量,我建议在const float pi = 3.14的行上使用更多的东西. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |