amo*_*ngh 1 c c++ header-files
我有3个C++源文件,我需要从一个文件调用另一个文件
getch.cpp
#include<stdio.h>
#include "getch2.h"
main()
{
char ch='x';
fun(ch);
}
Run Code Online (Sandbox Code Playgroud)
getch2.cpp
#include<stdio.h>
void fun(char);
main()
{
}
void fun(char x)
{
printf("the ascii value of the char is %d",x);
}
Run Code Online (Sandbox Code Playgroud)
func.h
void fun(char);
Run Code Online (Sandbox Code Playgroud)
当我编译getch2.cpp我得到错误
C:\ Users\amolsi\AppData\Local\Temp\cc1k7Vdp.o getch.cpp :(.text + 0x18):未定义引用`fun(char)'
C:\ Users\amolsi\Documents\C files\collect2.exe [错误] ld返回1退出状态
您的main功能需要更改为:
int main() { ... }
Run Code Online (Sandbox Code Playgroud)这两个getch.cpp和getch2.cpp包含main的功能.您不能一起使用它们来形成可执行文件.它们必须用于创建单独的可执行文件.
为了让您使用fun从getch.cpp和getch2.cpp建立可执行文件,你需要定义移动void fun(char){...}从getch2.cpp另一个.cpp文件.我们称之为func.cpp.
使用getch.cpp和func.cpp构建一个可执行文件.
使用getch2.cpp和func.cpp构建其他可执行文件.
更新,以回应OP的评论
档案func.h:
void fun(char);
Run Code Online (Sandbox Code Playgroud)
档案func.cpp:
void fun(char x)
{
printf("the ascii value of the char is %d",x);
}
Run Code Online (Sandbox Code Playgroud)
档案getch.cpp:
#include <stdio.h>
#include "func.h"
int main()
{
char ch='x';
fun(ch);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
档案getch2.cpp:
#include<stdio.h>
#include "func.h"
int main()
{
char ch='y';
fun(ch);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
使用getch.cpp和func.cpp构建可执行文件getch.exe.
使用getch2.cpp和func.cpp构建可执行文件getch2.exe.