0

当我们在 Turbo C 上工作时,我们默认获取所有函数和头文件,我们可以通过 #inlcude 通常包含它们,例如:stdlib.h、math.h

但是当使用这样的头文件编写一个简单的程序时,我得到了错误,因为我无法包含这些文件。这些头文件是不是默认我们可以使用的?如果是,那么如何使用这样的头文件?当我在“math.h”中使用函数 sqrt 时,由于未包含 math.h,因此出现错误,因此我必须将其包含在以下命令中:

cc -c aaa.c -I/usr/local/ssl/include
gcc -o aaa aaa.c -I/usr/local/ssl/include -L/usr/local/ssl/lib -lcrypto -lm
./aaa

在此命令中,第二个命令末尾有-lm以包含 math.h

同样,我再次使用了stdlib.h 中的函数 itoa(),我在 UNIX Solaris 服务器上执行该函数,但它没有被包含在内,并且出现 gettig 错误。现在我不知道如何添加这个头文件。

4

3 回答 3

3

标题math.h通常包含在内。代码可以编译。但是,编译器不会找到要链接的已编译二进制文件(math.h 的实现) ,除非您指定它这样做。所以你必须在命令中指定 -lm 。

itoa()不是 中的标准函数stdlib.h,所以不要使用它。您可以改用 sprintf。

于 2012-05-23T07:51:07.723 回答
0

您的编译器应提供命令行设置,您可以在其中指定包含目录、库目录等。最好查看编译器文档。

例如,Visual Studio 有一个命令开关 -I 来指定包含文件夹

alt。在某些情况下,它可以指定为环境变量,例如 set INCLUDE=...

这完全取决于您使用的编译器。

于 2012-05-23T07:48:21.400 回答
0

默认情况下,这些是从 libc 导出的标准库函数,它们应该可以在任何 Unix/Linux 风格中使用。您可以使用以下命令检查头文件存在的位置

find / -name "stdio.h" 2>/dev/null

还要确保使用 -l libc 链接到 libc

另外,您使用的是哪个编译器?我建议你使用 gcc,这样编译器的包含配置已经完成,你可以按原样使用它并开始使用。

于 2012-05-23T07:54:00.407 回答