为什么Linux和Windows的C库不同?

时间:2017-12-07 19:30:15

标签: c ubuntu gcc libraries string.h

我试图在Ubuntu和gcc编译器下运行 string.h 中的函数“strlwr”,“strupr”,“strcmpi”,“strrev”;得到下一条消息:

警告:函数'strupr'的隐式声明[-Wimplicit-function-declaration]

以及

(。text + 0x84):对`strupr'的未定义引用

一旦我尝试了Windows,相同的编译器,一切都运行良好。

我查看了linux下的“/ usr / include”中的string.h,它表明这是GNU C库ISO C99 7.21字符串处理的一部分(也尝试使用 -std = c99进行编译

在Windows中不能这样做(查看头文件的代码),因为头文件和库文件是嵌入在编译器代码下的,我是对的吗?(1)

再次在Linux中搜索 string.h 文件,我在不同路径下找到了近50个同名文件,例如/ usr / include / linux; / usr / include / x86-64-linux-gnu /位于Oracle VB和Arduino目录下的其他人。 为什么有这么多文件处理C中的字符串但以不同的方式进行?编译器如何知道要执行哪一项?有没有办法,在C文件下或在编译过程中定义多个头文件中的一个?(2)

我是否使用了过时的标题和库,是否有任何“官方”来源知道是否有任何库折旧?如何知道Windows标题和库下的内容?(3)

gcc版本5.4.0 20160609(Ubuntu 5.4.0-6ubuntu1~16.04.5)是我正在使用的和Windows 8。

0 个答案:

没有答案