鱼C论坛

 找回密码
 立即注册
查看: 4155|回复: 7

关于define后的;号

[复制链接]
发表于 2011-5-21 12:13:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

预编译命令后不是不能加“;”吗
怎么加不加都可以编译成功呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-21 12:35:53 | 显示全部楼层

null

例如#define pi 3.14 那么通过预处理程序在编译的时候会自动将 pi 都替换成 3.14 。
但若是#define pi 3.14;那 pi 会变替换3.14;这样到了现实例子中就背离了本义!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-21 12:53:19 | 显示全部楼层
举个例子:
#define PI 3.14;
int main(void){
  double a=PI;//将被预处理为double a=3.14;;
}
double a=3.14;;可以理解为语句
double a=3.14;
在加上一个空语句;
所以这时候没问题,但如果用在
double d;
for( ;d<PI;d+=1 ){...}就有问题了,预处理后变成for( ;d<3.14;;d+=1 ){...},for的()里出现了3个;所以就会报错。

评分

参与人数 1荣誉 +1 鱼币 +3 收起 理由
soldier + 1 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-21 17:34:50 | 显示全部楼层
半了解
这个问题是在甲鱼哥的视频里发现的

002第二章 数据类型,运算符和表达式01

谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-21 20:22:11 | 显示全部楼层
这个问题也曾经困扰了我,来这里还真是来对了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-21 21:11:20 | 显示全部楼层
哈~~~原来是直接替换的啊,并不是之间换数字的。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-22 00:30:51 | 显示全部楼层
语法没有错,意义相差甚远啊
一个是浮点,一个成字符串了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-10 15:24:14 | 显示全部楼层
很不错,继续努力,顶你哦哦哦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-7 00:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表