gpt4 book ai didi

c++ - 我是否应该在我的头文件中包含 ,这样我就可以声明一个接受 FILE* 的函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:29:09 26 4
gpt4 key购买 nike

例如在foo.h中:

typedef struct foo_t foo_t;

/* Lots of function declarations dealing with foo_t... */

int foo_print(const foo_t *foo); /* Print foo to stdout. */
int foo_fprint(FILE *f, const foo_t *foo); /* Print foo to file f. */

我不想在 foo.h 中乱放太多 foo.h 的用户可能不想包含的其他头文件,但我确实需要声明采用 FILE* 等类型的函数。我怀疑我是第一个遇到这种困境的人,那么在这种情况下人们通常会做什么呢?还是我想避免在我的头文件中包含 stdio.h

编辑:

人们似乎没有理解我的问题。澄清一下,这里有一些可能的解决方案:

  1. 只需包含 stdio.h 而不必担心它会导致我客户的代码发生冲突(例如如果他们碰巧有自己的函数恰好被称为 getchar).
  2. 使用#ifdef 查找stdio.h 是否已经包含,然后才声明FILE* 相关函数.这样做的缺点是它会在我客户的代码中对 #include 施加特定的顺序。
  3. 将所有与 I/O 相关的声明移至单独的头文件,例如 foo_io.h

问题是什么是最好的事情?

最佳答案

简短回答:您正在尝试解决一个不存在的问题。

如果您使用 FILE,则在 C++ 中包含 stdio.hcstdio。就这么简单。

尝试“优化”#include,除了明显未使用的情况外,不会给您带来任何好处并导致问题。

关于c++ - 我是否应该在我的头文件中包含 <stdio.h>,这样我就可以声明一个接受 FILE* 的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28546700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com