C - 如何将自己的标题保存在单独的文件夹中

时间:2013-03-12 17:19:44

标签: c header

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

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

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

我有一个名为“C”的文件夹。在“C”里面,我有一个名为“练习”的文件夹,我从书中做了所有的小项目。

同样在“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的副本都带入项目,而只是#包括我的test.h并执行以下操作:

// testMain.c

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

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

    return 0;
}

我知道&lt;&gt;是标准标题,但引用是当前文件夹中的标题,这是我不想要的。

有可能这样做吗?怎么样?

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

你们能否逐步说明为了能够做到这一点需要做些什么?

4 个答案:

答案 0 :(得分:6)

标题

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

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

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

如果您不喜欢这样做,或者您只想#include "test.h",则可以使用-I编译器参数来执行此操作,如下所示:

-I'../MyC/'

用于c文件

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

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

请记住,..表示返回一个目录

答案 1 :(得分:3)

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

gcc -I<path-to-headers> <path-to>/test.c testMain.c -o test_driver

答案 2 :(得分:2)

你已经添加了标题文件夹,所以没关系。您可以正常#include。如果无法找到您的标题,您将收到“找不到文件”错误。

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

答案 3 :(得分:0)

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

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

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

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