C语言 define 带参数的宏替换
#include<stdio.h>voidprint(){printf("hello\n");}intmain(){#defineprint()((void)(3))pr...
#include<stdio.h>
void print( )
{
printf("hello\n");
}
int main( )
{
#define print( ) ((void)(3) )
print( );
return 0;
}
问题一:(void)(3)该如何替换掉print( ),这个替换的细节能否叙述得详细一些?
问题二:若改为(void) ( ),结果又是如何?
只有15分了,期待着您的解答,谢谢! 展开
void print( )
{
printf("hello\n");
}
int main( )
{
#define print( ) ((void)(3) )
print( );
return 0;
}
问题一:(void)(3)该如何替换掉print( ),这个替换的细节能否叙述得详细一些?
问题二:若改为(void) ( ),结果又是如何?
只有15分了,期待着您的解答,谢谢! 展开
2个回答
展开全部
#include<stdio.h>
void print() {
printf("hello\n");
}
int main( ) {
// 定义在main()内部的宏,编译时,将用((void)(3))替换print()
#define print() ((void)(3))
// 不会调用函数void print(),而是替换为((void)(3)),不会显示任何内容。
print();
return 0;
}
追问
您好,我还想继续问一下,那编译后是否为:
int main( )
{
(void) 3;
return 0;
}
这条(void)3;语句的写法合法吗?
追答
是的,通过编译没有问题,只是没有任何作用而已。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询