嗨,我刚刚开始学习C语言.我为傻瓜书买了这个大C,并且经历过它.到目前为止它真的很有趣,但现在我被卡住了.我一直在谷歌搜索这个问题,但无济于事.我正在使用我使用的代码块10.05与GNU GCC.
我一直收到错误消息:
In function 'main': undefined reference to 'SafeCracker(int)'
代码并不复杂.我只是新人,非常沮丧.我不想跳过这一部分;我想知道发生了什么.
主要:
#include <iostream> #include "safestuff.h" using namespace std; int main() { cout << "Surprise,surprise!" << endl; cout << "The combination is (once again)" << endl; cout << SafeCracker(12) << endl; return 0; }
功能:
#include <iostream> using namespace std; string SafeCracker(int SafeID) { return "13-26-16"; }
标题:
using namespace std; #ifndef SAFESTUFF_H_INCLUDED #define SAFESTUFF_H_INCLUDED string SafeCracker(int SafeID); #endif // SAFESTUFF_H_INCLUDED
解决方法
您没有编译第一个列出的第二个文件.尝试直接用gcc编译来理解这一点.
假设您的文件命名为:
> main.cpp
> SafeCracker.cpp
> safestuff.h
这就是你在做什么
gcc main.cpp
虽然你应该这样做
gcc main.cpp SafeCracker.cpp
此外,SafeCracker.cpp也应该包含头文件,只是为了清楚起见.你将它们分开的原因是什么?
另一方面,从看到Daniel Hu的回答,< iostream>自动包含< string>为了你.您不应该依赖此功能,而应该包含< string>在每个使用字符串的文件中.
(来自下面的评论)您可能正在尝试将main.cpp构建为独立文件.这将使SafeCracker.cpp无法编译.您需要的是在Codeblocks中创建一个项目并将所有三个文件添加到它(* .cpp文件以及* .h文件).