16

首先,我几乎是一个初学者,所以我不知道如何解释我需要什么,但我会试一试。(我搜索但找不到完整的答案)。

我正在自己学习 C 并使用代码块。

我想创建自己的自定义函数迷你库以在我的程序中使用。

我有一个名为“C”的文件夹。在“C”中,我有一个名为“Exercises”的文件夹,我在其中完成一本书中的所有小项目。

同样在“C”中,我想要另一个名为“MyC”的文件夹,我将在其中保留自己的头文件和包含自定义函数实现的 .c 文件。例如,这些 .h 和 .c 将保存在“MyC”中:

//test.h

#ifndef _TEST_H
#define _TEST_H

int mySum(int, int);

#endif // _TEST_H

//test.c

#include <stdio.h>
#include "test.h"

int mySum(int a, int b)
{
    return a + b;
}

所以现在,我想做的是能够在“练习”中创建一个新项目,而不必将 test.h 和 test.c 的副本都带入项目中,而只需 #include my test .h 并执行以下操作:

//testMain.c

#include <stdio.h>
#include <test.h>

int main(void)
{
    printf("\n2 + 1 = %d", mySum(2, 1));

    return 0;
}

我知道 <> 用于标准标题,但引号用于当前文件夹中的标题,这就是我不想要的。

是否有可能做到这一点?如何?

我已经阅读了关于进入设置>编译器和搜索目录添加我有标题但没有工作的路径。它给了我一个错误“未定义对'mySum'的引用”我在#include 上尝试了引号和括号。

你们能否逐步说明需要做什么才能做到这一点?

4

4 回答 4

8

用于标题

如果要移回一个文件夹,请执行以下操作:#include "../something.h".

在您的情况下,只需执行以下操作:#include "../MyC/test.h"

..只是意味着返回一个目录

如果你不喜欢那样做,或者你想简单#include "test.h",你可以使用-I编译器参数来做,像这样:

-I'../MyC/'

对于 c 文件

您需要在编译器参数中做类似的事情。

gcc testMain.c ../MyC/test.c

请记住,..意味着返回一个目录

于 2013-03-12T17:25:16.440 回答
3

您已经添加了标题文件夹,这很好。你可以#include像往常一样。如果找不到您的标头,您将收到“找不到文件”错误。

但是您还需要链接此目录中的目标代码,并且您需要指定要搜索您的函数的目标文件。您的 IDE 中应该有一个设置来添加编译器选项,例如../MyC/test.o. 如果您尚未在这些函数中编译代码,则需要指定 .c 文件。

于 2013-03-12T17:27:22.860 回答
3

编译时需要包含该-I选项。例如:

gcc -I<path-to-headers> <path-to>/test.c testMain.c -o test_driver
于 2013-03-12T17:24:01.693 回答
0

考虑到“folder_to_code”包含test.hand test.c

gcc您可以使用以下命令添加包含文件夹:

gcc -I folder_to_code folder_to_code/test.c testMain.c -Wall -o program.exe

这样您就可以#include "test.h"毫无问题地添加到代码中。

于 2013-03-12T17:25:14.167 回答