gpt4 book ai didi

mysql - 跨多个源文件的共享类型 - C

转载 作者:行者123 更新时间:2023-11-29 23:53:08 25 4
gpt4 key购买 nike

我对 C 语言比较陌生,并且正在不断学习。我遇到困难的一件事是跨多个文件共享数据。我已经使用 extern 处理简单的事情,例如字符数组和整数。但是当涉及到一种类型时,比如使用 MySQL,那么实例又如何呢?即:

main.c:

#include <mysql.h>
#include <my_global.h>
MYSQL *mysql_con;

main.h:

#include <mysql.h>
#include <my_global.h>

extern MYSQL *mysql_con;

我可以通过其他文件使用 mysql_con - 只要我在其他文件中包含 mysql.h 和 my_global.h ,包含 header (如果我不将包含放在其他文件的头文件中,即functions.h和functions.c,当我制作函数原型(prototype)时,由于未知类型,它在编译时会呆住)。

我的问题是:有没有一种方法可以避免在将使用 mysql_con 的任何内容中一遍又一遍地包含相同的 header ?我什至必须在 main.h 中包含 mysql 的 header 才能声明 extern!有更有效的方法吗?

最佳答案

事实上,没有。没有比这更清晰、更有效的方法了。

但是,有一些可用选项:

  1. 将头文件的内容写入 .c 文件中。每次您想使用它时,只需在 .c 文件中写入 extern MYSQL *mysql_con; 即可。这需要更多的打字,并且可能会引入更多的错误。 不要这样做
  2. 您可以将头文件包含在编译器中。 -include my_header.h 选项可以做到这一点。如果您有一个命令来构建所有源文件,那么就可以减少输入次数。不过,我也不建议这样做。原因有二:
    • 没有人预料到这一点。人们通常不会查看您的构建脚本。
    • 您不希望此头文件包含在所有源文件中。

我建议每次都包含头文件。使用好的文本编辑器不会有太多开销。

顺便说一句,许多其他语言也遵循这种方式。您应该在 Java 和 Python 中import。帕斯卡使用使用。所以大家都觉得没问题。

关于mysql - 跨多个源文件的共享类型 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25512242/

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