宏定义编译问题
求助大神,这样宏定义函数编译总是通不过,显示取地址符有误,但是原始函数调用中就用了取地址符。另想请问一下宏定义函数的时候可以把外面的变量传进来吗? 本帖最后由 xieglt 于 2020-9-16 09:41 编辑宏不是函数,只是一个替换,"宏定义函数的时候可以把外面的变量传进来"是什么意思,没明白。
比如说你觉得 “hello,world. I love c/c plus plus”太长,而又要经常用,就可以定义为宏
#define _HStr"hello,world. I love c/c plus plus"
这样,编译器一旦在代码里发现 _HStr ,就会用 "hello,world. I love c/c plus plus" 替换
//不知道这是不是你的完整代码,宏里面并没有用到 len 和 ret
#define READ_SAMPLING_MESSAFE(CCRPortId,CCR_Message,len,validity,ret)\
CCR_Message=*(int *)0X40D62814;\
CCR_Message=*(int *)0X40D6281C;\
if((*(int *)0X40D62818 == 0X4) && (*(int *)0X40D62820 == 0X4))/*这个 ; 不需要*/\
*validity = 1;\
else\
*validity = 0;
//调用宏。没有看到完整代码,只能这么写了。
//宏定义的参数不需要指定类型,因为宏只是一个替换,不能做类型识别,函数才能做类型识别
//另外在c++里,& 不光是取址符号,还是引用符号,如果你定义的不是宏而是函数,传指针要用 * 而不是 &,
voidMarcoTest()
{
int CCRPortId,len,validity,ret;
int CCR_Message = {0};
READ_SAMPLING_MESSAFE(CCRPortId,CCR_Message,&len,&validity,&ret)
}
页:
[1]