C++“在”声明之前“使用”命名空间

问题描述 投票:0回答:1

我知道大多数代码根本不是这样组织的,但出于我的特定目的,DS&A问题,我希望我的代码在一个文件中并以特定的方式组织(主要在顶部)

int main(){
//arrange - i.e. create the input params, 
//act - run the answer code i.e. answers::myFunction(params)
//any kind of post analysis  -- lol assert?  
}

namespace answers{
answer implementations
}

问题在于,answers 命名空间在声明之前就已被使用(因此无法编译)。为了让我的编译器正常工作,我必须交换这些,即

namespace answers{
answer implementations
}

int main(){
//arrange - i.e. create the input params, 
//act - run the answer code i.e. answers::myFunction(params)
//any kind of post analysis  -- lol assert?  
}

我不喜欢这样(主要功能在底部分散注意力),我希望我的主要功能在顶部。

是否有适用于任何编译器的编译器选项允许我以这种方式组织我的代码?

注意:我目前使用的是 g++(Rev7,由 MSYS2 项目构建)13.1.0

c++ compiler-errors code-organization
1个回答
0
投票

是否有适用于任何编译器的编译器选项允许我以这种方式组织我的代码?

不,这是 C++(和 C)的一个非常基本的原则,即名称需要在使用之前声明(模板中存在一些小例外)。

您通常不需要在使用之前定义您使用的实体。因此,只需在

main
之前声明所需的所有内容,然后在
main
之后定义通常就可以了。

在这种情况下,声明通常会被分隔到头文件中。

© www.soinside.com 2019 - 2024. All rights reserved.