gpt4 book ai didi

c++ - 在 C++ 中的单独文件中拥有命名空间的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-04 17:01:16 25 4
gpt4 key购买 nike

在其他文件中使用命名空间的正确方法是什么,以便我可以将它们与 #include<> 一起使用
测试.h

#ifndef TEST_H_INCLUDED
#define TEST_H_INCLUDED

namespace numbers{
const int foo = 8;
}

#endif //TEST_H_INCLUDED
然而,我也看到了这个
测试.h
#ifndef TEST_H_INCLUDED
#define TEST_H_INCLUDED

namespace numbers{
extern const int foo;
}

#endif //TEST_H_INCLUDED
测试.cpp
#include "test.h"
namespace numbers{
const int foo = 8;
}
然后我想在任何地方使用它,
#include "test.h"

std::cout << numbers::foo;
他们都工作,这是正确的方法,为什么?

最佳答案

使用第一种方法,您将获得多个定义(假设您有多个包含),这是允许的,因为全局常量不受单一定义规则的约束。
第二种方法只有一个定义,在 test.cpp 中。
第一种方法更有可能导致编译器优化,因为编译器总是知道常量的值,但是如果对象的构造成本很高,那么使用第二种方法可能会更好,因为没有必须构造多个对象的风险.尽管即使在这种情况下,链接器也可以消除除一个对象之外的所有对象。

关于c++ - 在 C++ 中的单独文件中拥有命名空间的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64060919/

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