如何在不编辑的情况下更改C程序的输出?

时间:2014-11-02 20:03:14

标签: c makefile

我有一个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程序。我怎么能这样做?

2 个答案:

答案 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