Sql 在Mac/Windows/Linux上使用GNUC库和其他数据结构库。?

Sql 在Mac/Windows/Linux上使用GNUC库和其他数据结构库。?,sql,c,libraries,portability,Sql,C,Libraries,Portability,我想知道C库系统/字符串/数据结构/数据库等是否依赖于平台 这些库依赖于特定平台的内容有哪些。? 比如正则表达式/字符串操作/sql连接等库是如何依赖于平台的 我可以在任何平台上使用它们进行文件I/O/路径等操作吗 就像我们在python中使用sys/os等模块一样 我想构建一个处理字符串、数据库(sqlite3、mysql、Oracle)、数据结构、文件I/O和系统路径的程序。在Windows、Linux和Mac平台上重新编译时,它可以运行。 我希望它是基于控制台的 请不要建议我用其他编程语言

我想知道C库系统/字符串/数据结构/数据库等是否依赖于平台

这些库依赖于特定平台的内容有哪些。? 比如正则表达式/字符串操作/sql连接等库是如何依赖于平台的

我可以在任何平台上使用它们进行文件I/O/路径等操作吗 就像我们在python中使用sys/os等模块一样

我想构建一个处理字符串、数据库(sqlite3、mysql、Oracle)、数据结构、文件I/O和系统路径的程序。在Windows、Linux和Mac平台上重新编译时,它可以运行。 我希望它是基于控制台的

请不要建议我用其他编程语言来做,我希望C语言的人能回答


感谢使用C库函数,我建议您确保在中使用函数。这将(至少在理论上)保证与其他POSIX平台的兼容性

如果您在linux上使用
glibc
(即普通的C库)编程,那么其中的文档可以很好地指出什么是GNU扩展,但是POSIX标准(上面引用)是金标准

对于其他库,您必须查看有问题的库

请记住,如果存在特定的不兼容区域,可以在这些位周围使用
#ifdef
等,并将特定于机器的元素保留在特定的文件中

针对您提到的具体问题: *POSIX regexp函数(
regcomp
regexec
regerror
regfree
)是POSIX标准的一部分。 *大多数字符串操作函数(例如,strstr)都是POSIX标准的一部分。一些(例如,
asprintf
)是GNU扩展。 *C库不提供SQL连接。您需要一个特定的C库来处理SQL连接,或者使用类似于
libdbi
的东西。您需要查看特定的库,以了解其他平台上有哪些支持


尤其要注意windows上的路径操作(想想斜杠与反斜杠,以及驱动器号),特别是处理用户如何输入它们以及传递给函数的内容。

好吧,只要使用标准C库,一切都很好。GNUC库(glibc)是C标准的一个实现,例如微软有自己的实现

从用户(您)的角度来看,推进并不重要。如果你举个例子

#include <stdio.h>
#包括
然后,您可以在任何符合标准的平台上调用
fopen()
,然后对文件i/o使用
fread()
。或任何其他标准C函数

Linux、Mac和Windows都符合标准(即已经实现了ISO C),因此标准功能在所有平台上都做同样的事情。传递给
fopen()
的文件路径也相同。Windows在文件路径中使用反斜杠(\)而不是Unix方式(正斜杠,/)这一事实并不重要:在Windows上,在您的C程序中,您使用Unix样式的表示法