链接.c和.h文件

乔斯马

对于我的程序,我总共链接3个文件。一个main.c,sortfile.c和my.h(头文件)。对于我的sortfile.c,我正在实现OddEven Sort。我不确定我的编码算法是否正确。还想知道通常在头文件中包含哪些信息。仅仅是其他两个c文件包含#include吗?

#include <stdio.h>


void swap(int *, int *);
void Odd_Even_Sort(int *);


/* swaps the elements */
void swap(int * x, int * y)
{
    int temp;

    temp = *x;
    *x = *y;
    *y = temp;
}

/* sorts the array using oddeven algorithm */
void Odd_Even_Sort(int * x)
{
    int sort = 0, i;

    while (!sort)
    {
        sort = 1;
        for (i = 1;i < MAX;i += 2)
        {
            if (x[i] > x[i+1])
            {
                swap(&x[i], &x[i+1]);
                sort = 0;
            }
        }
        for (i = 0;i < MAX - 1;i += 2)
        {
            if (x[i] > x[i + 1])
            {
                swap(&x[i], &x[i + 1]);
                sort = 0;
            }
        }
    }

我没有将main包含在sortfile.c中,因为我打算将main放置在main.c文件中。

巴西尔·斯塔林凯维奇

你看起来很困惑。首先阅读有关链接程序编译器的Wikipage 您不链接文件,而仅链接目标文件

(我正在猜测并假设并希望您正在使用Linux)

您还可以将翻译单元编译为目标文件。

头文件用于预处理程序(编译的第一个“阶段”)。预处理是文本操作。请参阅此答案以获取一些提示。

所以,你可能要编译main.cmain.o

gcc -Wall -g -c main.c -o main.o

(该-Wall请求的所有警告,所以永远不会忘记;该-g请求调试信息;-c要求编译一些源到某些目标文件;秩序的方案论证gcc问题大很多)。

同样,您想将自己编译sortfile.csortfile.o我留下的练习是获得正确的命令来执行此操作。

最后,您想要myprogsort通过链接两个目标文件来获得一个可执行程序

gcc -g main.o sortfile.o -o myprogsort

但是您真的想使用一些构建自动化工具。了解有关GNU make的信息写您的Makefile(请注意,tabs在其中很重要)。请参阅示例。不要忘记尝试make -p理解(并利用)所有内置规则make

还想知道通常在头文件中包含哪些信息。

通常,您只希望在公共头文件中声明#include在组成翻译单元的每个源文件中都需要声明)。您还可以添加定义static inline功能。阅读有关内联函数的更多信息(一开始您可能不需要它们)。

不要忘记学习如何使用gdb调试器你可能会跑

gdb ./myprogsort

不止一次。更改源代码后,请不要忘记重建您的内容。

还要github上用C编码的一些中型免费软件项目的源代码中查看您会学到很多东西。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档