C头文件格式

时间:2014-07-26 01:18:20

标签: c format header-files

尝试抓住正确的格式来设置我为学校做的外部功能的头文件。

在.h文件中,我将#ifndef <token> #define <token>#endif预处理器调用放在我的原型周围,但是在函数本身内使用的附加#defines进入.c文件或者在.h?

将整个包添加到主程序时,我只需要在主程序#include "name_of_function_pkg.h"的顶部添加,还是需要在头文件中引用.c文件?< / p>

[编辑]根据要求为您添加了代码。整件事情很好但只是想按照其他人的标准来写。

我的main()文件:

    #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 个答案:

答案 0 :(得分:0)

您需要了解C预处理器的工作方式和处理#include指令。阅读C preprocessor上的wikipage和GNU cpp编译器中GCC的文档。

这纯粹是文字的东西。预处理器用包含的文件替换#include,并展开稍后出现的#define - d宏。

您甚至可以避免使用任何#include并复制和粘贴代码,但这将是一个非常糟糕的习惯。

实际上,在标题中放入多个文件之间共享的所有声明,以及所有需要的#define

向我们展示您的代码,并查看现有的做法(例如,查看一些用C编码的免费软件的源代码)。

答案 1 :(得分:0)

不,您永远不需要引用C文件来将文件链接在一起。您只需要#include头文件。但是,请确保您需要的所有文件都在同一文件夹中。是否要在头文件或C文件中使用#define取决于范围。如果你只是在main中使用你定义的值,那么#define在main中,但是如果它们将在其他c文件中使用,例如在函数定义中,则将它放在标题中。只要警惕你已定义的内容。