C语言一个简单的宏定义问题?
来源:百度知道 编辑:UC知道 时间:2024/05/18 08:06:32
代码如下:
#include<stdio.h>
#define abc(nihao) printf("nihao")
void mian()
{
abc(hello);
}
以上为代码,但是运行后输出的是“nihao”,为什么不是“hello”呢?
高手给解释一下,谢谢!
#include<stdio.h>
#define abc(nihao) printf("nihao")
void mian()
{
abc(hello);
}
以上为代码,但是运行后输出的是“nihao”,为什么不是“hello”呢?
高手给解释一下,谢谢!
#include<stdio.h>
#define abc(nihao) printf(#nihao)
int main(){
abc(hello);
}
***********************************************************************
#把宏参数变为一个字符串,##把两个宏参数贴合在一起.
这是一个很好的#的例子。
#define _T(x) L##x 是《Windows核心编程》中对Unicode字符串的例子。源自 short int k[] = L"这是个Unicode字符串"; 现在不支持short int 了,但是可以wchar_t。
***********************************************************************
我和sgedev站在一起。你可以把我的程序编译去看。 #nihao是可以的。
#include<stdio.h>
#define abc(nihao) printf(nihao)
void main()
{
abc("hello");
}
你要想实现这个功能, 可以这样定义宏:
#define abc(nihao) printf(#nihao)
因为你把nihao放在“”中了,不管写什么都会print “nihao”
你把“”去掉或者把前面abc中加上“”
根本不能运行。。。 宏定义是 预编译 代码 替换而已。。
abc(hello) 不符合 abc(nihao) 的替换。。。根本不行。。。
怎么会输出nihao呢?根本不能运行,同意二楼,