C++ - 日食 - 组织包含
C++ - Eclipse - Organize include
我定义了一个类Executer
分为Executer.hpp
和Executer.cpp
。
在Executer.hpp
有代码:
static std::unique_ptr<Executer> mInstance;
static std::once_flag mOnceFlag;
在Executer.cpp
有代码:
std::unique_ptr<Executer> Executer::mInstance;
std::once_flag Executer::mOnceFlag; // without this apparently
// useless line of code, the program using this shared lib
// claims: undefined reference to `Executer::mOnceFlag'
之后,我尝试让 eclipse 组织我的导入。
我得到的是:
//------------------------------- Executer.hpp
#include <memory>
#include <stdexcept>
#include <string>
namespace std {
struct once_flag;
} /* namespace std */
//------------------------------- Executer.cpp
#include "Executer.hpp"
#include <mutex>
我所期望的(并且编译正确):
//------------------------------- Executer.hpp
#include <memory>
#include <mutex>
#include <stdexcept>
#include <string>
//------------------------------- Executer.cpp
#include "Executer.hpp"
- 为什么 Eclipse 会以这种方式行事?
- 我是否可以以这样一种方式配置 Eclipse,以便我获得组织包含的方式(我已经看到了许多选项,但我遇到了最糟糕的情况)
静态数据成员为什么 Eclipse 会以这种方式行事?
的类型不需要在数据成员的声明点完成。也就是说,声明将使用刚刚向前声明的类型进行编译,而不是定义的类型。
"Organize Include"的默认设置尝试最小化其他标头中包含的标头数,以加快编译时间,因此当类型的前向声明足够时,它更喜欢创建一个而不是包含标头而不是定义类型。
我是否可以以这样一种方式配置 Eclipse,以便我获得组织包含的方式(我已经看到了许多选项,但我遇到了最糟糕的情况)
取消选中Preferences | C/C++ | Code Style | Organize Includes
中的Forward declare classes, structs and unions
应该会给你你想要的行为。
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 编译包含字符串的代码时遇到问题
- c++库的公共头文件中应该包含什么
- 将包含C样式数组的对象初始化为成员变量(C++)
- 是否需要删除包含对象的"pair"?
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 使用mongocxx驱动程序时包含头文件问题
- 如何在h文件中包含.o对象文件
- 在混合代码库中将C转换为C++时出现许多包含错误
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- cmath抛出错误C2062、C2059、C2143和C2447.cmath包含在矢量文件中
- 为什么您需要C++头文件的包含保护
- 将 c++ 包含添加到日食的正确方法
- 如何在日食中找到指向特定标头的包含路由?
- C++ - 日食 - 组织包含
- 用于包含路径的日食设置
- 已安装 Cygwin64,但在<iostream>日食中找不到未解析的包含内容
- 日食C++。包含带有类的 .h 文件。 "Symbol '[class]' could not be resolved"