请问:C 语言头文件函数声明及include处理
请教:C 语言头文件函数声明及include处理
我在写一个小程序时,使用include包含了另一个头文件testh.h,在调用testh.h中声明函数时出现link错误。实例如下:
main函数文件:
#include <stdio.h>
#include "ISP\\testh.h "
/* 在文件 testh.c 中定义了一个简单的加法函数,并在头文件:testh.h 中声明 */
void main()
{
int x,y;
int sumall;
x = 5;
y = 10;
printf( "good for include file.\n ");
sumall = sum(x,y);
printf( " the sum value is: %d\n ",sumall);
getch();
return;
}
头文件testh.h:
#ifdef TEST_H
#define TEST_H
extern int sum(int x,int y);
#endif
函数文件testh.c:
#include "ISP\\testh.h "
int sum(int x,int y)
{
return(x+y);
}
请问:
1。上面的三个文件都在同一个文件夹下,为什么出现link错误:
Linker error: undefined symbol '_sum ' in module ISP.C(main文件)
2。预定义关键字include的处理是什么?是否有特殊的路径要求?
3。函数体实现文件testh.c是否需包含语句:#include "testh.h "
谢谢!
------解决方案--------------------
预定义关键字include的处理是什么?是否有特殊的路径要求?
===============================
#include就是把后面的文件包含到这个文件里,可以理解为直接把源文件复制到这个地方。如果你在#include里不加路径名,那么这两个文件就必须在同一文件夹下,你如果包含有完整路径,就没有要求。
函数体实现文件testh.c是否需包含语句:#include "testh.h "
==================================
不需要。
*.h头文件中可以不用extern关键字;
最后,一定要建一个工程,将三个文件全部包含到同一个工程中才能通过编译。否则它会说你的sum函数没有声明。因为系统不能自动到已经打开或者与当前文件同目录的源文件中去搜索。建工程就是告诉系统:我的加进来的这些文件是用来完成一件事的,它们可以互相合作。
------解决方案--------------------
然后add item加入项目文件
.h文件要包含,
.lib文件才能编译。
我在写一个小程序时,使用include包含了另一个头文件testh.h,在调用testh.h中声明函数时出现link错误。实例如下:
main函数文件:
#include <stdio.h>
#include "ISP\\testh.h "
/* 在文件 testh.c 中定义了一个简单的加法函数,并在头文件:testh.h 中声明 */
void main()
{
int x,y;
int sumall;
x = 5;
y = 10;
printf( "good for include file.\n ");
sumall = sum(x,y);
printf( " the sum value is: %d\n ",sumall);
getch();
return;
}
头文件testh.h:
#ifdef TEST_H
#define TEST_H
extern int sum(int x,int y);
#endif
函数文件testh.c:
#include "ISP\\testh.h "
int sum(int x,int y)
{
return(x+y);
}
请问:
1。上面的三个文件都在同一个文件夹下,为什么出现link错误:
Linker error: undefined symbol '_sum ' in module ISP.C(main文件)
2。预定义关键字include的处理是什么?是否有特殊的路径要求?
3。函数体实现文件testh.c是否需包含语句:#include "testh.h "
谢谢!
------解决方案--------------------
预定义关键字include的处理是什么?是否有特殊的路径要求?
===============================
#include就是把后面的文件包含到这个文件里,可以理解为直接把源文件复制到这个地方。如果你在#include里不加路径名,那么这两个文件就必须在同一文件夹下,你如果包含有完整路径,就没有要求。
函数体实现文件testh.c是否需包含语句:#include "testh.h "
==================================
不需要。
*.h头文件中可以不用extern关键字;
最后,一定要建一个工程,将三个文件全部包含到同一个工程中才能通过编译。否则它会说你的sum函数没有声明。因为系统不能自动到已经打开或者与当前文件同目录的源文件中去搜索。建工程就是告诉系统:我的加进来的这些文件是用来完成一件事的,它们可以互相合作。
------解决方案--------------------
然后add item加入项目文件
.h文件要包含,
.lib文件才能编译。