使用带功能的argv时出错

时间:2014-02-27 14:01:10

标签: c++ arrays pointers

我开始学习cpp,并且我开始使用一个简单的程序:

#include <stdio.h>
#include <vector>
#include "functions.h"
using namespace std;

int main(int argc,char * argv[]){
  double start=0;
  double end=0;
  vector<double> fbseq;

  getInput(argc,argv);

return 0;
}

在functions.h中,我有:

using namespace std;
void getInput(int,char **);

当我编译并运行时,我得到:

g++ fibonacci.cpp -o fibonacci
/tmp/ccZ1cCvi.o: In function `main':
fibonacci.cpp:(.text+0x3d): undefined reference to `getInput(int, char**)'

我真的不明白这意味着什么,有人可以帮助我,因为我可以看到这与我不理解指针有关吗?

由于 丹

4 个答案:

答案 0 :(得分:3)

这是一个链接器错误,这意味着代码编译良好但链接器无法找到您使用的所有内容的定义。在这种情况下,这意味着您没有在任何地方定义getInput。你需要给函数一个体。通常,您应该在相应的.cpp文件中执行此操作:

#include "functions.h"

void getInput(int argc, char** argv) {
  // Implement here
}

当你有这个时,你需要确保你也编译该文件。只需将其添加到g++命令。

答案 1 :(得分:1)

问题不在于指针,而是关于你只声明函数getInput并且它没有在任何地方定义。

答案 2 :(得分:1)

您的编译命令似乎错过了functions.cpp或其他实现getInput函数的文件。

P.S。你不应该写“using namespace std;”在头文件中,这是一个不好的做法。参见Sutter和Alexandrescu的“C ++编码标准:101规则,指南和最佳实践”中的第59项:

  

“不要在头文件中或#include之前使用命名空间。”

答案 3 :(得分:0)

您只声明了getInput函数(这是头文件中的部分),但您实际上没有在任何地方定义它(指定函数体)。