【问题标题】:Struct accessing to represent file name?结构访问以表示文件名?
【发布时间】:2014-10-01 13:23:31
【问题描述】:

有一次我看到了非常有趣的代码,其中包含如下内容:

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 功能。无论如何,我相信你明白我的要求。这怎么可能?

【问题讨论】:

  • 开始,这一行:PFILE NEW_FILE;应该是 struct PFILE NEW_FILE;
  • 你在说什么?

标签: c data-structures macros struct io


【解决方案1】:

create_file 绝对是一个宏,它使用# 运算符将其参数字符串化,并在其上调用fopen()(或调用它的函数)。

可以这样定义:

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

【讨论】:

  • 请给我一个例子,说明我是如何做到这一点的。看来我在当前的项目中也需要它。所以不仅仅是好奇心。
  • # 运算符?我只记得那些只用来声明预处理器指令的书。如果是settings.ini 我不明白怎么办。也许我需要知道# 才能弄清楚
  • @Edenia 仅在行首。在宏的中间,它变成了“stringify”操作符。
  • @DrewMcGowen Interasting。
猜你喜欢
  • 2012-08-16
  • 2020-05-24
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多