【发布时间】:2014-05-21 01:04:24
【问题描述】:
我从事一个在 Windows、Mac 和 Linux 上运行的 C++ 项目。因此,有一天在 Visual Studio 中处理相同部分的代码并不少见,接下来是 Xcode,接下来是 Qt Creator,等等。
最近我开始使用 namespace{} 关键字,其方式与 C# 中使用 #region/#endregion 的方式非常相似。例如:
// MyFile.cpp
namespace MyNamespace
{
// lots of code related to one class
}
namespace MyNamespace
{
// lots of code related to another class
}
namespace MyNamespace
{
// lots of code related to yet another class
}
虽然这不允许我为每个区域命名,但我仍然发现能够折叠大块代码非常有帮助。我知道存在特定于 IDE 的解决方案,例如 #pragma region/#pragma endregion,但我无法找到与 C++ IDE 无关的方法。另外,我知道这些大块可以放在他们自己的文件中,但是出于这个问题的目的,请假设这不是一个选项。
我的问题是:这会在编译的二进制文件中产生任何开销吗?这样做会对性能产生负面影响或完全影响最终结果(二进制)吗?
(注意:我们在 Windows 上使用微软的编译器,在 Mac 上使用 clang,在 Linux 上使用 gcc。)
谢谢!
【问题讨论】:
-
我的假设是没有,因为如果将这些命名空间放入它们自己的文件中,预编译的代码结果将几乎相同。这听起来合理吗?
-
我认为 OP 意味着所有区域都在同一个文件中,在编辑器和 IDE 中使用“折叠”...
标签: c++ ide namespaces cross-platform code-generation