我试图在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进行编译强大的,不行的)我从头文件中学到了我可以使用“strcasecmp”函数,而不是“strcmpi”。
在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。