C - как включить собственные заголовки, хранящиеся в отдельной папке
Прежде всего, я в значительной степени новичок, поэтому я не уверен, как объяснить, что мне нужно, но я попробую. (Я искал, но не смог найти полный ответ).
Я изучаю 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;
}
Я знаю, что < > для стандартных заголовков, но кавычки предназначены для заголовков в текущей папке, и этого я не хочу.
Можно ли это сделать? Как?
Я читал о входе в настройки > компилятор, а в каталогах поиска добавлял путь, в котором у меня заголовок, но не работал. Это дает мне ошибку "undefined ссылка на 'mySum'
Я пробовал цитаты и скобки на #include.
Можете ли вы, ребята, дать пошаговое описание того, что нужно сделать, чтобы это сделать?
Ответы
Ответ 1
Вы добавили папку заголовка, чтобы это было хорошо. Вы можете #include
как обычно. Вы бы получили ошибку "файл не найден", если он не смог найти ваш заголовок.
Но вам также понадобится связать с объектным кодом в этом каталоге, и вам нужно будет указать, какие файлы объектов будут искать ваши функции. Должна быть настройка в вашей среде IDE для добавления параметров компилятора, например. ../MyC/test.o
. Если вы еще не скомпилировали код в этих функциях, вам нужно указать файл .c.
Ответ 2
для заголовков
Если вы хотите переместить одну папку, сделайте следующее: #include "../something.h"
.
В вашем случае просто сделайте следующее: #include "../MyC/test.h"
..
просто означает вернуться к одному каталогу.
Если вам не нравится это делать, или вы просто хотите #include "test.h"
, вы можете сделать это с помощью параметра -I
компилятора, например:
-I'../MyC/'
для файлов c
Вам нужно сделать что-то знакомое в параметре компилятора.
gcc testMain.c ../MyC/test.c
Просто помните, что ..
означает вернуться к одному каталогу!
Ответ 3
При компиляции вам необходимо включить параметр -I
. Например:
gcc -I<path-to-headers> <path-to>/test.c testMain.c -o test_driver
Ответ 4
учитывая, что "fodler_to_code" содержит test.h
и test.c
Вы можете добавить папку include с помощью команды gcc:
gcc -I fodler_to_code folder_to_code/test.c testMain.c -Wall -o program.exe
Таким образом вы можете добавить #include "test.h"
в код без проблем.