包含包含文件的文件时出现问题

时间:2008-11-06 09:31:40

标签: c++

我一直在尝试将文件包含在包含的文件中,例如

main.cpp文件

#include <includedfile.cpp>
int main(){
     cout<<name<<endl;
}

includedfile.cpp

#include <iostream>
using namespace std;
string name;
name = "jim";

此代码不起作用,debuger表示名称未定义。

4 个答案:

答案 0 :(得分:8)

您不能在方法之外存在语句!

name = "jim"; // This is outside of any method, so it is an error.

你可以重构你的代码,所以变量声明也是一个初始赋值,它应该是有效的(我的C ++有点生疏,所以我可能在这一点上错了。)

string name = "jim";

答案 1 :(得分:0)

但是,您必须有一个很好的理由来包含.cpp文件。它发生了,但很少见!你到底想要达到什么目的?或者你只是在试验?

答案 2 :(得分:0)

更改 includedfile.cpp 以说明

string name = "jim";

应该有效(由Comeau在线确认)。 你还应该明确地做

#include <string>

否则你依赖于这是由iostream完成的事实。

答案 3 :(得分:0)

嗯,当然它不起作用,因为命名空间定义只在included.cpp中起作用。这里简单的解决方案是在main中再次编写“using”。 C \ C ++中的许多内容在“文件范围”中定义,当您在另一个中插入时,如何定义这样的范围并不是很清楚。

此外,包含cpps确实不是一个好习惯。你应该包含h \ hpp文件(标题),因为它会增加项目(凝聚力)的麻烦并产生如此讨论的问题。

#include <includedfile.h>
#include <iostream>
int main()
{     
    std::cout << name << endl;
}

//includedfile.cpp
void DoSomething()
{
  std::string name;
  name = "jim";
}

//includedfile.h
void DoSomething();