在.cpp中,我想将文件输出到在编译时创建的目录(由编译时确定)。我在makefile中通过-DCOMPILETIME = $(关于时间的东西)传递了这个值。我想将存储在COMPILETIME中的值传递给sprintf,这样我就可以创建一个文件路径字符串,最终用于放置我的输出文件。
我试过了:
MoveNext
以及
#define str(x) #x
sprintf(filepath,"\"%s\file\"",str(COMPILETIME));
但我只得到
#define str(x) #x
#define strname(name) str(name)
sprintf(filepath,"\"%s\file\"",strname(COMPILETIME));
作为输出。
答案 0 :(得分:2)
你的宏很好。这是一个测试程序:
#include <stdio.h>
#define str(x) #x
#define strname(name) str(name)
int main()
{
printf("\"%s/file\"\n",strname(COMPILETIME));
return 0;
}
构建命令:
cc -Wall -o soc soc.c
输出:
"COMPILETIME/file"
构建命令:
cc -Wall -o soc soc.c -DCOMPILETIME=abcd
输出:
"abcd/file"
在gcc 4.9.2。
下测试 fopen
面临的问题可能与:
sprintf(filepath,"\"%s\file\"",strname(COMPILETIME));
^^^^
制作
sprintf(filepath,"\"%s\\file\"",strname(COMPILETIME));
^^^^
否则,你正在逃避角色f
,它什么都不做。您还应该能够使用正斜杠而不是反斜杠。
sprintf(filepath,"\"%s/file\"",strname(COMPILETIME));
^^^^