c++宏测试

首先是宏定义。此处有几点要注意:
所有宏的代码要么都在一行之内,要么每行后面加换行符"\"

#pragma once

extern char* g_ptr;

#define STREAM_GET_BYTE(b) { \
* g_ptr = (b); \
++g_ptr; \
}


int macro_test();

宏的引用。此处要注意:宏在编译前被插入到原码中,从反汇编来看,每一行都是同样的反汇编,而跟函数不同。


#include <stdio.h>
#include "macro.h"


char gstring[256] = "hello\r\nhow are you?\r\nfine thank u,and u?\r\ni'm fine 2";
char* g_ptr = gstring;


int macro_test() {

	printf("\r\nfirst chance:%s\r\n", gstring);

	const char* data = "what is your name?";
	// 	for (int i = 0;i < lstrlenA(data);i ++)
	// 	{
	// 		STREAM_GET_BYTE(data[i]);
	// 	}
	STREAM_GET_BYTE(data[0]);
	STREAM_GET_BYTE(data[1]);
	STREAM_GET_BYTE(data[2]);
	STREAM_GET_BYTE(data[3]);
	STREAM_GET_BYTE(data[4]);
	STREAM_GET_BYTE(data[5]);

	printf("\r\n\r\nsecond chance:%s\r\n", gstring);

	return true;
}

下图为宏的反汇编:
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值