包括两个.c文件中的头文件

时间:2014-12-11 20:36:42

标签: c

程序应保存几个点并根据要求将它们放出。 该程序包含一个.h文件和两个.c文件。 这是我得到的编译器信息:

prog.c:46:25:致命错误:pointstack.h:没有这样的文件或目录#include“pointstack.h”

我错过了什么?

//File: pointStack.h - Headerfile 

#ifndef POINTSTACK_H
#define POINTSTACK_H


#include <stdio.h>
#include <stdlib.h>


//structs

//struct for coordinates

struct point
{
    float rX;
    float rY;
    float rZ;
};
typedef struct point POINT;

struct stackPoint
{
    POINT p;
    struct stackPoint *next;
};
typedef struct stackPoint STACK_POINT;
typedef STACK_POINT *STACK_POINT_PTR;

//functions


void push(POINT pushPoint);
POINT pop();
int isEmpty();
void printStackElement(POINT aPoint);

#endif
//File: pointstack.c - functions of stack program

#include "pointstack.h" 


//global variable

STACK_POINT_PTR stackTop = NULL;

void push(POINT pushPoint) 
{

//temporary variable 

    STACK_POINT_PTR stackPoint = (STACK_POINT_PTR) malloc(sizeof(STACK_POINT));


//in case there is not enough memory

    if(stackPoint == NULL)
    {
        printf("not enough memory ... End \n");
        exit(1);
    }


//save point

    stackPoint->p = pushPoint;
    stackPoint->next = stackTop;
    stackTop = stackPoint;

    return;
}

POINT pop() 
{

//save stackTop and nextStackTop

    STACK_POINT firstStackPoint = *stackTop;

    free(stackTop);

    stackTop = firstStackPoint.next;

    return firstStackPoint.p;
}

int isEmpty()
{   
    if(stackTop == NULL)
    {
        return 1;
    }
    else {
        return 0;
    }
}


void printStackElement(POINT aPoint)
{
    printf("Point x: %f, Point y: %f, Point z: %f \n", aPoint.rX, aPoint.rY, aPoint.rZ);
    return;
}
//File: stackmain.c 


#include "pointstack.h"

void exit(int);

POINT readPoint() 
{
    POINT userPoint;

    printf("x-coordinate \n");
    scanf("%62f", &userPoint.rX);
    printf("y-coordinate \n");
    scanf("%62f", &userPoint.rY);
    printf("z-coordinate \n");
    scanf("%62f", &userPoint.rZ);

    return userPoint;
}


int main(void)
{

//declaration

    char cCmd;

    printf("’p’ for input, ’q’ for output: \n");

    while(1)
    {

        scanf("%c", &cCmd);

        if(cCmd == 'p') 
        {
            push(readPoint());
            printf("’p’ for input, ’q’ for output: \n");       
        }

        if(cCmd == 'q')
        {
            while(!isEmpty())
            {
                printStackElement(pop());
            }
            break;
        }
    }

    return 0;
}

1 个答案:

答案 0 :(得分:7)

您错过的是您的文件名为pointStack.h,大写为S,而pointstack.h的大小写为小。