gpt4 book ai didi

c++ - 在 Visual C++ 中的不同文件和不同命名空间中使用函数

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:23 25 4
gpt4 key购买 nike

我正在努力学习 C++ 的第一步。已问this问题,但没有得到专门关于 namespace 的完整答案。

我做了以下事情。

  1. 在 Visual Studio 2015 中创建了一个空项目(新建项目 -> Visual C++ -> 空项目)
  2. 然后我在Source.cpp和PrintFunc.cpp中添加了两个文件,各自的内容如下。

源.cpp

#include <iostream>

using namespace std;

int PrintHello();
extern int tempCount;

void main()
{
int i;
PrintHello();
cout << tempCount << endl;
cout << "Hello from main" << endl;
}

打印函数.cpp

#include <iostream>

using namespace std;

int tempCount = 111;

int PrintHello()
{
cout << "Hello from Source1" << endl;
return 0;
}

这是完美的编译。现在我正在学习命名空间,所以我只是尝试将第二个文件的内容放在命名空间中,如下所示。

PrintFunc.cpp(已修改)

#include <iostream>

using namespace std;

namespace MyNameSpace
{
int tempCount = 111;

int PrintHello()
{
cout << "Hello from Source1" << endl;
return 0;
}
}

现在我也修改了 Source.cpp 以反射(reflect)前面片段中的命名空间介绍。

#include <iostream>

using namespace std;

int MyNameSpace::PrintHello();
extern int MyNameSpace::tempCount;

void main()
{
int i;
PrintHello();
cout << tempCount << endl;
cout << "Hello from main" << endl;
}

这根本无法编译。有人可以请纠正我。我的目标是理解 C++ 中的命名空间概念。我也有很好的 C# 经验。

最佳答案

编译Source.cpp时编译器不知道命名空间MYSpace的问题。

#include <iostream>

using namespace std;

namespace MyNameSpace
{
int PrintHello();
extern int tempCount;
}
int main()
{
int i;
MyNameSpace::PrintHello();
cout << MyNameSpace::tempCount << endl;
cout << "Hello from main" << endl;
}

但是这个示例没用。它之所以有效,是因为您只有一个消费者 .cpp

您应该使用.h 文件,然后将它(PrintFunc.h) 包含在Source.cpp 和任何其他 中。 cpp 当你想使用那个函数时。

我会写一个例子:

打印.h

#pragma once

namespace MyNameSpace
{
int PrintHello();
extern int tempCount;
}

请注意,我们在这里没有使用额外的includesusing namespace。我们将使用 includes 仅在 functions interfaces 中使用一些类。使用命名空间 可能会“破坏”消费者的 .cpp.h

打印.cpp

#include <iostream>
#include "Print.h"

using namespace std;

int MyNameSpace::tempCount = 111;

int MyNameSpace::PrintHello()
{
cout << "Hello from Source1" << endl;
return 0;
}

在这里我们可以设置任何include它不会触及任何其他文件。

和消费者.cpp:

#include <iostream>
#include "Print.h"

using namespace std;

int main()
{
int i;
MyNameSpace::PrintHello();
cout << MyNameSpace::tempCount << endl;
cout << "Hello from main" << endl;
}

VS 特定:#pragma once 对于 VS,您必须在任何 .cpp 的第一行添加 #include "stdafx.h"

关于c++ - 在 Visual C++ 中的不同文件和不同命名空间中使用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37693999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com