【发布时间】:2016-07-04 10:37:38
【问题描述】:
假设我有一个父目录 A 有两个子目录 B 和 C。
子目录C有一个helper.c和helper.h如图:
//helper.c
void print(){
printf("Hello, World!\n");
}
//helper.h
void print();
现在,在子目录 B 中,我有一个 main.c,它只调用打印函数:
//main.c
#include<stdio.h>
#include"../C/helper.h"
void main(){
print();
}
我尝试了以下命令来编译 main.c:
Command 1: gcc main.c //Gives undefined reference to 'print' error
Command 2: gcc main.c ../C/helper.c //Compiles successfully
现在我从 main .c 中删除了 #include"../C/helper.h" 并再次尝试了命令 2。它仍然有效。
所以我有以下问题:
i) 是否包含 helper.h 文件有什么区别? helper.c?
ii) 为什么命令 1 失败?
iii) 有没有办法编译我的 C 程序而无需指定 helper.c 每次?
【问题讨论】:
标签: c compilation linker