1

对不起,如果这是一个原始问题,但我在 linux 中真的很新。有没有办法在使用make命令构建应用程序时替换源代码中的常量?

我知道下一个可能的方法是更改​​源代码中使用的头文件,但我问这个是因为我必须对多个微控制器进行编程,并且每个微控制器都应该有一个唯一的整数作为其编号(这个编号在代码)。

任何提示将不胜感激!

4

2 回答 2

3

您可以使用通过命令行传递给编译器的C 语言宏。通常的Makefile片段看起来像

CFLAGS = -DVERSION_INT=42 -DVERSION_STRING=\"Frobozz Magic Frobnicator (TM)\"

main: main.c
         $(CC) $(CFLAGS) -o $@ main.c

在 main.c 你可能有

static int version = VERSION_INT;
static char vers[] = VERSION_STRING;
于 2012-09-19T08:34:16.870 回答
2

它通常通过在调用编译器时定义预处理器宏来完成,例如:

# Makefile
NUMBER := 42
%.o : %.c
    gcc -c -o $@ ${CPPFLAGS} ${CFLAGS} -DNUMBER=${NUMBER} $<

在源文件中:

// some.c
int number = NUMBER;
于 2012-09-19T08:33:36.067 回答