Search code examples
ccustom-headers

Issues with .h files in C


I created a sample .h file in C and it didn't work, for some reason. The files are as follows:

header.c:

#include <stdio.h> 
#include "header.h"
int add(int a, int b) {
int tmp=a;
int i;
for(i=0, i==tmp, i++) {
b++;
}
return(b);
}

header.h:

#ifndef HEADER_H
#define HEADER_H

int add(int a, int b);
#endif

main.c:

#include <stdio.h>
#include "header.h"
int main(void) {
int foo=add(1, 2);
printf("%i \n", foo);
return(0);
}

When I try to compile main.c with make and gcc it says that add is undefined. Help!


Solution

  • Including the header file only includes the function prototype. You need to link the actual definition of add() by compiling separate object files or you can compile them together in a single command line:

    gcc -Wall -Wextra header.c main.c -o main
    

    Perhaps, you may want to consider Makefiles for larger projects.

    Your add() function has issues:

    1) Semi-colons ; are used in for loops, not commas.
    2) The condition should be i!=tmp for addition.

    This:

    for(i=0, i==tmp, i++) { .. }
    

    should be

    for(i=0; i!=tmp; i++) { .. }