Подтвердить что ты не робот

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.

Можете ли вы, ребята, дать пошаговое описание того, что нужно сделать, чтобы это сделать?

4b9b3361

Ответ 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" в код без проблем.