所以我有一个带有默认值函数的标题:
head.h:
a(int x, int y, bool* b = NULL);
head.cpp:
a(int x, int y, bool* b = NULL){...}
source.cpp:
a(1, 2, NULL);
a(1, 2);
我在链接阶段遇到错误:
undefined reference to a(int, int, bool*)
我也尝试删除默认值:
head.h:
a(int x, int y, bool* b);
a(int x, int y);
head.cpp:
a(int x, int y, bool* b){...}
a(int x, int y){...}
source.cpp:
a(1, 2, NULL);
a(1, 2);
使用相同的错误进行链接:
undefined reference to a(int, int, bool*)
undefined reference to a(int, int)
这可能是什么?我的编译器不好?坏的makefile?
修改:
它接缝真正的头文件看起来像:
a(const int x, const int y, bool* b = NULL);
const
,抱歉错误。
答案 0 :(得分:1)
它接缝我在标头中用const
变量定义了函数,但是在没有const
的cpp中实现它,因此链接器无法找到函数的实现。
答案 1 :(得分:0)
gcc -o source source.cpp header.cpp
命令应该像这样
我想你忘记了header.cpp
答案 2 :(得分:0)
试试这个
首先单独编译程序并生成目标文件
gcc -c header.c
gcc -c source.c
然后像这样生成exe
gcc header.o source.o -o exefile