2014-10-01 47 views
0

一次,我看到很有趣的代码,包括像:结构访问代表文件名?

typedef struct 
{ 
    FILE* txt; 
    FILE* ini; 
} PFILE; 

int main(void) 
{ 
    PFILE NEW_FILE; 
    create_file (settings.txt); // creats file called settings.txt 

    return 1; 
} 

什么我可能会丢失一些神秘的宏。这只是我不记得的代码的一部分。 哦,显然我错过了create_file函数。无论如何,我相信你会得到我要问的。这怎么可能呢?

+0

启动,这一行:PFILE NEW_FILE;应该是struct PFILE NEW_FILE; – user3629249 2014-10-02 07:42:53

+0

你在说什么? – Edenia 2014-10-02 22:19:02

回答

2

create_file绝对是一个宏,它将其参数与#运算符串联起来,并调用fopen()(或调用它的函数)。

它可以被定义为这样:

#define create_file(x) NEW_FILE.txt = fopen(#x, "w") 
+0

请给我一个例子,说明我是如何解决这个问题的。看来,我也需要在我目前的项目中。所以不仅好奇。 – Edenia 2014-10-01 13:27:05

+0

'#'操作符?我只记得仅用于声明预处理器指令的书籍。而如果它是'settings.ini',我不明白。也许我需要知道关于'#'来解决这个问题 – Edenia 2014-10-01 13:29:11

+0

@Edenia只在一行的开头。在宏的中间,它变成了“stringify”运算符。 – 2014-10-01 13:30:54