gpt4 book ai didi

c++ - 如何避免涉及全局变量的循环#include?

转载 作者:行者123 更新时间:2023-11-30 05:08:31 24 4
gpt4 key购买 nike

我有一个 header myglobal.h 声明了两个全局对象:

#include "log.h"  // defines Clog
Clog log_file;

#include "lib.h"
Clib main_lib;

但是,我的lib.h 也使用了全局 header :

#include "myglobal.h"  // error: circular #include

class Clib
{
void func(void) { log_file << "hello"; }
}

如何编写这些 header 以避免 #include 循环?

最佳答案

在头文件中加入extern

// myglobal.h
#include "log.h"
extern Clog log_file;

// #include "lib.h" DO NOT include this one
extern Clib main_lib;

然后在cpp文件(log.cpp)中定义

 #include "log.h"
Clog log_file;

clib 的定义也移动到 cpp 文件(例如 lib.cpp)。

 #include "myglobal.h"

void Clib::func(void) { log_file << "hello"; }

如果您不能将定义移出头文件,您只需要一个cpp 文件来定义Clib main_lib。除此之外,只要您为所有 header 都包含保护就应该没问题。

关于c++ - 如何避免涉及全局变量的循环#include?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46819226/

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