首先,我几乎是初学者,所以我不知道如何解释我的需要,但我会试一试。 (我搜索但找不到完整的答案)。
我正在自己学习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上试过引号和括号。
你们能否逐步说明为了能够做到这一点需要做些什么?
答案 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.h
和test.c
,
您可以使用gcc
命令添加包含文件夹:
gcc -I folder_to_code folder_to_code/test.c testMain.c -Wall -o program.exe
这样,您可以毫无问题地将#include "test.h"
添加到代码中。