我有一个C程序,我不允许编辑它,如下所示:
#include <stdio.h>
#ifndef YEAR
#define YEAR "2013"
#endif
int main(){
printf("Hello world from " YEAR "\n");
return 0;
}
我需要创建一个makefile来编译这个程序并将YEAR更改为2014,这样输出将是“2014年的Hello world”而不编辑C程序。我怎么能这样做?
答案 0 :(得分:4)
编译命令应以gcc -Wall -DYEAR='"2014"'
开头。您可以使用合适的Makefile
设置对CFLAGS
进行编码。 This answer应该是鼓舞人心的。
答案 1 :(得分:2)
只需使用-D参数传递预处理程序指令,例如:
$ cat tmp.c
#include <stdio.h>
#ifndef YEAR
#define YEAR "2013"
#endif
int main(){
printf("Hello world from " YEAR "\n");
return 0;
}
$ gcc -DYEAR=\"1234\" tmp.c -o tmp && ./tmp
Hello world from 1234