Формат файла заголовка C

Попытка получить правильный формат для настройки заголовочных файлов для моих внешних функций, которые я делаю для школы.

В файле.h я размещаю #ifndef <token> #define <token> а также #endif препроцессор звонит вокруг моих прототипов, но дополнительные #defines, для использования внутри самой функции, перейдите в файл.c или в.h?

При добавлении всего пакета в мою основную программу мне просто нужно добавить вверху моей основной программы #include "name_of_function_pkg.h" или в заголовочном файле тоже должна быть ссылка на файл.c?

[Редактировать] Добавил код для вас в соответствии с просьбой. Все работает хорошо, но просто хочу написать это по стандарту, как все остальные.

Мой основной () файл:

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

    //  DEFINED Values

    #define FALSE 1
    #define TRUE 0

    //  MAIN CODE
    int main()
    {

    //  Local Variables
        int success = TRUE;

        float fValue,fConvert;
        float fSrcFactor,fDstFactor;

        char cSourceCurrency;
        char cDestCurrency;
        char cNewline;

    //  User Input
        printf("Enter source currency: ");
        scanf("%c%c",&cSourceCurrency,&cNewline);
        printf("Enter destination currency: ");
        scanf("%c%c",&cDestCurrency,&cNewline);
        printf("Enter the value: ");
        scanf("%f",&fValue);

        fConvert = convert( cSourceCurrency, cDestCurrency, fValue);


    //  Output
        if(fConvert == -1)
            {
                printf("There was an error with the input.");
            }

        else printf("%c%.2f = %c%.2f",cSourceCurrency,fValue,cDestCurrency,fConvert) ;


    //  Exit    
        return 0;

    }

Мой файл utils.h:

#ifndef UTILS
#define UTILS 

float convert( char cSourceCurrency, char cDestCurrency, float fValue );

#endif

Мой файл utils.c [усеченный]

// Should these defines be in the .h file?
#define CDN 1
#define YEN 95.04
#define EUR 0.69
#define E2Y 137.69

#define FALSE 1
#define TRUE 0


float convert( char cSourceCurrency, char cDestCurrency, float fValue )
{
//  Function Variables
int success = TRUE;

float fConvert; 
float fSrcFactor,fDstFactor;


//  Error Checking
if( (cSourceCurrency!='Y') && (cSourceCurrency!='$') && (cSourceCurrency!='E'))
    {
        success = FALSE;
        return (-1);
    }
if( (cDestCurrency!='Y') && (cDestCurrency!='$') && (cDestCurrency!='E'))
    {
        success = FALSE;
        return (-1);
    }

2 ответа

Вы должны понимать, как препроцессор C работает и обрабатывает #include директивы. Прочитайте вики-страницу на препроцессоре C и документацию GNU cpp в компиляторе GCC.

Это чисто текстовая вещь. Препроцессор заменяет #include включенным файлом, и расширяет #define-d макросы, которые появляются позже.

Вы могли бы даже избежать любого #include и копировать и вставлять код, но это было бы очень плохой привычкой.

На практике, вставьте в заголовки все объявления, разделенные между более чем одним файлом, а также все необходимые #define

Покажите нам свой код, а также посмотрите на существующую практику (например, посмотрите на исходный код некоторого свободного программного обеспечения, написанного на C).

Нет, вам никогда не нужно ссылаться на файл C, чтобы связать файлы вместе. Вам нужно только #include заголовочные файлы. Однако убедитесь, что все нужные вам файлы находятся в одной папке. Хотите ли вы использовать #define в заголовочном файле или файл C, зависит от области действия. Если вы собираетесь использовать только определенные вами значения в main, тогда #define его в main, но если они будут использоваться в других файлах c, таких как определения функций, поместите их в заголовок. Просто будьте осторожны с тем, что вы уже определили.

Другие вопросы по тегам