C 中 .h 文件的问题

Issues with .h files in C

我在 C 中创建了一个示例 .h 文件,但出于某种原因它没有工作。文件如下:

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);
}

当我尝试使用 make 和 gcc 编译 main.c 时,它说 add 未定义。求助!

您需要将 main.c 和 header.c 编译成同一个可执行文件:

all: main

main: main.o header.o
    gcc -o main main.o header.o

header.o: header.c header.h
    gcc -c header.c

main.o: main.c header.h
    gcc -c main.c

或者对于没有 make 文件的单行代码:

gcc -g -o main main.c header.c

包含头文件只包含函数原型。您需要通过编译单独的目标文件来 link add() 的实际定义,或者您可以在一个命令行中将它们一起编译:

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

也许,对于较大的项目,您可能需要考虑 Makefiles

您的 add() 函数有问题:

1) for 循环中使用分号 ;,而不是逗号。
2) 添加的条件应该是i!=tmp

这个:

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

应该是

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

您需要将 header.c 添加到编译调用中。你不能只编译 main.c.