主文件与需要用到的文件已放入同一文件夹中,不管是直接引用函数还是写入了头文件再引用,都无法调用。运行主文件hello.h时返回的错误信息是未找到该函数,运行其他文件的头文件时有返回无法运行的错误。
//文件名为hello.c
#include
#include"print.h"
int main(){
int a=10;
int print(int q);
print(a);
return 0;
}
//print.c
#include
#include"print.h"
int main(){}
int print(int q){
printf("%d\n",q);
return;
}
//print.h
#ifndef print_h
#define print_h
#include
int print(int q);
#endif
//主文件返回
C:\Users\86136\AppData\Local\Temp\cc30QyLn.o:Hello.c:(.text+0x21): undefined reference to `print'
collect2.exe: error: ld returned 1 exit status
//print.h头文件返回错误
程序“print.exe”无法运行: 指定的可执行文件不是此操作系统平台的有效应用程序。所在位置 行:1 字符: 63
+ ... "c:\train\" ; if ($?) { gcc print.h -o print } ; if ($?) { .\print }
+ ~~~~~~~。
所在位置 行:1 字符: 63
+ ... "c:\train\" ; if ($?) { gcc print.h -o print } ; if ($?) { .\print }
+ ~~~~~~~
+ CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedException
+ FullyQualifiedErrorId : NativeCommandFailed
print.c 里的 main 函数删掉, 因为 print.c 不是独立运行的,而是最后和你的主函数 hello.c 一起运行的,程序只能有一个 main 函数;
检查一下之前是否有写过 print_h。 如果之前有其他的头文件也写 #define 过 print_h,就不会再执行这个print.h文件了;
可能.h文件损坏了吧,要不移除重写下;
---------------------------------------下面是一点题外话。
print.c 的返回类型应该是 void ,上面有报了个错误。
print.h 里包含了 stdio.h 其他文件就可以不用包含了。 望采纳
把print.c里的int main(){}删除看看
不知道你这个问题是否已经解决, 如果还没有解决的话: