0
点赞
收藏
分享

微信扫一扫

SpringBoot如何写好单元测试

禾木瞎写 03-24 13:00 阅读 2

1、宏(***)

1.1#define定义宏

#define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义 宏(define macro)。

1.2#define替换方式

在程序中扩展#define定义符号和宏时,需要涉及几个步骤。

1. 在调用宏时,首先对参数进行检查,看看是否包含任何由#define定义的符号。如果是,它们首先 被替换。

2. 替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值所替换。

3. 最后,再次对结果文件进行扫描,看看它是否包含任何由#define定义的符号。如果是,就重复上 述处理过程。

1.3宏offsetof的模拟实现


#define OFFSETOF(type,meber) (size_t)&(((type*)0)->meber)


struct A
{
	int a;//0~3
	char c;//4
	double d;//8~15
};
int main()
{
	printf("%d\n", OFFSETOF(struct A, a));
	printf("%d\n", OFFSETOF(struct A, c));
	printf("%d\n", OFFSETOF(struct A, d));
	return 0;
}

1.4宏和函数对比

2、编译链接的过程

2.1编译环境

组成一个程序的每个源文件通过编译过程分别转换成目标代码(object code)。

每个目标文件由链接器(linker)捆绑在一起,形成一个单一而完整的可执行程序。

链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人 的程序库,将其需要的函数也链接到程序中。

1.2编译阶段

举报

相关推荐

0 条评论