0
点赞
收藏
分享

微信扫一扫

类和对象——static 成员,匿名对象(C++)

Fifi的天马行空 2024-11-21 阅读 9

文章目录


你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~


🍊自我介绍

  Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”“内容共创官” ,现在我来为大家介绍一下有关物联网-嵌入式方面的相关内容。


🍊Makefile中的变量

简介:
Makefile中使用变量优点类似于C语言中的宏定义。使用该变量相当于内容替换,使用变量可以使Makefile易于维护,修改起来变得简单起来。

常用的两种变量

普通变量

普通变量,一般是用户自己根据需求定义的变量,变量的定义要做到见名知意。
示例:
"=“是最普通的,在Makefile中容易搞错赋值等号,使用”="进行赋值,变量的值是整个Makefile中最后被指定的值。
eg:

OBJ_A = A
OBJ_B = $(OBJ_A) B
OBJ_A = AA

all:
	@echo "${OBJ_B}"


//经过上面的赋值后,最后OBJ_B的值是AA B,而不是A B;
因为在make命令时,会把整个Makefile展开,从而来决定变量最后的值
总的来说就是跟C语言的赋值结果不同,它是运行完所有行之后确定最终的赋值结果

":="表示直接赋值,赋予当前位置的值。

OBJ_A := A
OBJ_B := $(OBJ_A) B
OBJ_A := AA

all:
	@echo "${OBJ_B}"

//这样最后OBJ_B的值是A B

"?="表示如果该变量没有被赋值,赋值其等号后面的值。

VAR := M
VAR ?= A

all:
	@echo "{VAR}"   //M ;如果没有VAR := M 则最后的结果为A

自动变量

变量名含义
$@规则中的目标集合,在模式规则中,如果有多个目标的话,"$@"表示匹配模式中的目标集合
$<依赖文件集合中的第一个文件
$^所有依赖文件的集合,使用空格分开,如果在依赖文件中有多个重复的文件,会去除重复的依赖文件,只保留一份

举例子说明:

all : main.o fun.o
	gcc main.o fun.o -o all
	//一般我们会这么写gcc main.o fun.o -o $@
$@ : all
$< : main.o
$^ : main.o fun.o

代码实操

fun.c

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

int global = 20;

void print_value()
{
	printf("global = %d\n",global);
}

fun.h

#ifndef __FUN_H__
#define __FUN_H__

#include <stdio.h>

extern int global;
extern void print_value();

#endif

main.c

#include "fun.h"


int main()
{
	print_value();	
	return 0;
}

Makefile

CC := gcc

TARGET := main_exec
OBJECT := main.o fun.o

$(TARGET) : $(OBJECT)
	$(CC) $^ -o $@

%.o : %.c
	$(CC) -c $^ -o $@

clean :
	rm -rf *.o main_exec	

最后操作和上一节最后的操作一样,就可以得到我们的结果

举报

相关推荐

0 条评论