
C语言宏定义为何不用分号结束?如果一行写不下怎么办?
为什么要做这样的规定?不用分号,为什么也不用其它符号?编译的时候怎么知道这一行在什么地方结束呢?是换行符(回车键)吗?...
为什么要做这样的规定?不用分号,为什么也不用其它符号?编译的时候怎么知道这一行在什么地方结束呢?
是换行符(回车键)吗? 展开
是换行符(回车键)吗? 展开
展开全部
1.C语言宏定义为何不用分号结束?为什么要做这样的规定?
答:
因为#define语句属于编译预处理,它不属于c语言语句。c语言规定每一条语句后面要加上分号,但编译预处理不是c语言语句,所以不必遵守此规定。
2. 一行多长?80字节?255字节?如果仍然不够怎么办?
答:
一行的长度与具体的操作系统和编译器的设置有关,但肯定大于255字节。其实,一行的最大长度再大也没有意义,因为你不可能将那么多代码写入一行,这样会非常不方便阅读。比较好的方法是,在一行的末尾使用‘\’符号,然后回车输入第二行,就可以将这两行连接成一行了。
答:
因为#define语句属于编译预处理,它不属于c语言语句。c语言规定每一条语句后面要加上分号,但编译预处理不是c语言语句,所以不必遵守此规定。
2. 一行多长?80字节?255字节?如果仍然不够怎么办?
答:
一行的长度与具体的操作系统和编译器的设置有关,但肯定大于255字节。其实,一行的最大长度再大也没有意义,因为你不可能将那么多代码写入一行,这样会非常不方便阅读。比较好的方法是,在一行的末尾使用‘\’符号,然后回车输入第二行,就可以将这两行连接成一行了。
展开全部
分号是C语言一条语句结束的标识,宏定义可以是一条完整的语句,也可以是一条语句的一部分,还可以是多条语句组成。所以不一定要用分号结束,而是要根据实际情况具体判断是否要用分号。
在定义宏时,如果一行写入的数据太长,会影响阅读,这时可以在需要换行的地方加入反斜杠(\),然后在\后换行。
比如
#define output(x) printf("the var's \
value is %d",\
x)
和写作
#define output(x) printf("the var's value is %d", x)
是没有区别的。
在定义宏时,如果一行写入的数据太长,会影响阅读,这时可以在需要换行的地方加入反斜杠(\),然后在\后换行。
比如
#define output(x) printf("the var's \
value is %d",\
x)
和写作
#define output(x) printf("the var's value is %d", x)
是没有区别的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一行多长还真没研究过。应该没有限制
但如果 美观上 肯定是不允许太长。
C宏 换行符是 ”\“
不用;结束 不能简单说 规定如此,
规定肯定有原因, 因为C宏只是完完全全的简简单单的 原样替换
所以绝对不能用;结束。
比如写一个 #define max(a,b) (a) > (b) ? (a) : (b)
如果你在if()的测试条件里面使用max宏,并且max宏是以;结束的会出现什么情况?
if(...;) {}
这样if()里面出现的就不是 表达式而是一条语句 所以肯定报错。
------------------
不是就是一个"\"符号 比如
max(a,b) (a)>(b) ? (a) \
: (b)
\左边要有空格
但如果 美观上 肯定是不允许太长。
C宏 换行符是 ”\“
不用;结束 不能简单说 规定如此,
规定肯定有原因, 因为C宏只是完完全全的简简单单的 原样替换
所以绝对不能用;结束。
比如写一个 #define max(a,b) (a) > (b) ? (a) : (b)
如果你在if()的测试条件里面使用max宏,并且max宏是以;结束的会出现什么情况?
if(...;) {}
这样if()里面出现的就不是 表达式而是一条语句 所以肯定报错。
------------------
不是就是一个"\"符号 比如
max(a,b) (a)>(b) ? (a) \
: (b)
\左边要有空格
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-06-02
展开全部
#define BOOST_DETAIL_CREATE_BINARY_LITERAL_BIT_SEQUENCE( d, bit_groupings ) \
BOOST_PP_EMPTY \
BOOST_PP_CAT( BOOST_PP_WHILE_, d ) \
( BOOST_DETAIL_BINARY_LITERAL_PREDICATE \
, BOOST_DETAIL_BINARY_LITERAL_OPERATION \
, bit_groupings () \
)
BOOST_PP_EMPTY \
BOOST_PP_CAT( BOOST_PP_WHILE_, d ) \
( BOOST_DETAIL_BINARY_LITERAL_PREDICATE \
, BOOST_DETAIL_BINARY_LITERAL_OPERATION \
, bit_groupings () \
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
规定如此。一行可以写很长的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |