按着 C 头文件 | 菜鸟教程 的demo操作我发现报错了,其实是demo写的有问题,报下面这种错误
PS F:\work\c> cd "f:\work\c\" ; if ($?) { gcc test.c -o test } ; if ($?) { .\test }
f:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\admin\AppData\Local\Temp\ccZyDBQ3.o:test.c:(.text+0xf): undefined reference to `test'collect2.exe: error: ld returned 1 exit status
来我给你一个demo
header.h
int a(int b){
return b*2;
}
最关心的还是header.h放哪里是不是,看下图
然后是test.c
#include <stdio.h>
#include <windows.h>
#include "header.h"
int main (void)
{
printf("%d",a(4));
// puts(test());
}
输出结果
所有是官方demo有问题,了解?
博主想,正常的demo应该是下面
test.c
#include <stdio.h>
#include <windows.h>
#include "header.h"
int main (void)
{
char *i;
i=test();
puts(i);
}
header.h
char *test(){
return "d2322";
}
-------上面是runoob网站上教程报错后博主自己想的,不一定对,但是能跑博主也刚开始学!
下面贴下 防止重复引入.h文件和别名命名的demo(官方也只是提一下,索性就博主自己百度了)
test.c
#include <stdio.h>
#include <windows.h>
#ifndef HEADER_H //防止多次引入header.h
#define HEADER_H "header.h" //以宏形式定义header.h
#include HEADER_H
#endif
int main (void)
{
printf("%d",a(4));
}
header.c
int a(int b){
return b*2;
}