空流,我必须包含 ostream 吗?

2023-12-21

我正在写一个记录器。如果禁用,这是定义 LOG 宏的代码:

#ifdef NO_LOG

#include <ostream>

struct nullstream : std::ostream {
    nullstream() : std::ios(0), std::ostream(0) {}
};

static nullstream logstream;

#define LOG if(0) logstream

#endif

LOG << "Log message " << 123 << std::endl;

它工作正常。编译器应该完全删除与LOG宏相关的代码。

但是我想避免包含 ostream 并将 logstream 对象定义为真正“轻”的东西,可能为空。

谢谢你!


// We still need a forward declaration of 'ostream' in order to
// swallow templated manipulators such as 'endl'.
#include <iosfwd>

struct nullstream {};

// Swallow all types
template <typename T>
nullstream & operator<<(nullstream & s, T const &) {return s;}

// Swallow manipulator templates
nullstream & operator<<(nullstream & s, std::ostream &(std::ostream&)) {return s;}

static nullstream logstream;

#define LOG if(0) logstream

// Example (including "iostream" so we can test the behaviour with "endl").
#include <iostream>

int main()
{
    LOG << "Log message " << 123 << std::endl;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

空流,我必须包含 ostream 吗? 的相关文章

  • C#9 顶级语句文件上的属性

    我正在尝试向顶级语句文件添加属性 但没有找到任何相关信息 是否可以 对于某些上下文 我想仅在该文件中禁用规则 SuppressMessage StyleCop CSharp LayoutRules SA1516 ElementsMustBe
  • 从 .Net 将简单数据插入 Excel 文件的最简单方法

    我有一个 Excel 文件 大约有 10 列和 1 20 行 我需要插入 1 20 行包含各种数据元素 我想知道是否有一种方法可以将一些标签放入 Excel 文件中 以便可以找到并替换它们 将列标记为 名称 的东西 这样我就可以在代码中说
  • 为什么 LinkedList 通常比 List 慢?

    我开始在我的一些 C 算法中使用一些 LinkedList 而不是列表 希望能够加快速度 然而 我注意到他们只是感觉更慢 像任何优秀的开发人员一样 我认为我应该尽职调查并验证我的感受 所以我决定对一些简单的循环进行基准测试 我认为用一些随机
  • 禁用除滚动之外的 DataGridView

    我如何配置 datagridview 以便用户只能在行中移动并使用滚动 而没有其他 如果我禁用网格不允许我使用滚动 将您的 datagridview 设置为只读 这将禁用任何编辑 dataGridView1 ReadOnly true 在你
  • 将占位符文本添加到文本框

    我正在寻找一种将占位符文本添加到文本框的方法 就像在 html5 中使用文本框一样 IE 如果文本框没有文本 则会添加文本Enter some text here 当用户单击它时 占位符文本消失并允许用户输入自己的文本 如果文本框失去焦点并
  • CMake 警告:无法为目标生成安全的链接器搜索路径

    在为 pcl 项目运行 CMake 时 我收到一条警告消息 Configuring done CMake Warning at CMakeLists txt 12 add executable Cannot generate a safe
  • 如何优化这个查询(涉及4毫米表)

    我正在使用如下所示的遗留数据库架构 product table表有字段 uid 整数 主键 name varchar 50 category表有字段 uid 整数 主键 name varchar 50 好吧 现在product table与
  • Windows 程序如何临时更改其时区?

    我写了一个函数来返回time t与给定日期的午夜相对应的值 当给定日期没有午夜时 它返回最早可用的时间 例如 当埃及进入夏令时时 这种情况就可能发生 今年 时间更改于 4 月 29 日晚上午夜生效 因此时钟直接从 23 59 转到 01 0
  • C++ 析构函数:何时释放内存?

    如果我删除一个导致其析构函数被调用的对象 那么内存是在析构函数完成函数中的任何操作之前还是之后被释放 仅当最小派生类子对象被销毁后才会释放内存 所以如果你有 class Base class Derived public Base publ
  • 从 ef core 的子集合中删除一些项目

    我有一个父表和子表 其中父表与子表具有一对多关系 我想删除一些子项 并且希望父项的子集合反映该更改 如果我使用删除选定的子项RemoveRange 那么子集合不会更新 如果我使用Remove从子集合中删除子集合然后 显然 它不如使用效率高R
  • IBM Watson 对话服务错误:无法从“方法组”转换为“conversation.onMessage”

    我正在尝试运行 IBM Watson会话服务团结和下面是代码片段 https github com watson developer cloud unity sdk conversation private Conversation m C
  • 为什么 GCC 6.3 在没有显式 C++11 支持的情况下编译此 Braced-Init-List 代码?

    我有一个问题大括号括起来的列表的不同含义 https stackoverflow com q 37682392 2642059 我知道C 03不支持C 11initializer list 然而 即使没有 std c 11编译器标志 gcc
  • 停止 TcpListener 的正确方法

    我目前正在使用 TcpListener 来处理传入连接 每个连接都有一个线程用于处理通信 然后关闭该单个连接 代码如下 TcpListener listener new TcpListener IPAddress Any Port Syst
  • printf 参数不足

    我的问题是关于缺少参数的 printf 之后的行为 printf s blah blah d int integer was given as argument and not int written 我已经知道 如果格式参数不足 则行为是
  • 统一;随机物体移动[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在制作一款机器人战斗游戏 我希望敌人随机移动 然后有时会向敌人移动 我希望运动包含在其中的代码 else if avoid fal
  • 无效的模板相关成员函数模板推导 - 认为我正在尝试使用 std::set

    我有一个继承自基类模板的类模板 基类模板有一个数据成员和一个成员函数模板 我想从我的超类中调用它 我知道为了消除对成员函数模板的调用的歧义 我必须使用template关键字 我必须明确引用this在超级班里 this gt base mem
  • C 中的静态和动态绑定(严格来说是 C,而不是 C++)是什么?

    我最初对发布这个问题感到担忧 以免它重复 但即使在谷歌搜索了许多关键字之后 我在 StackOverflow 上找不到任何解释 C 的静态和动态绑定的链接 尽管有 C 的问题和答案 但是都涉及classes以及显然不适合 C 的东西 Sta
  • Visual Studio 2015默认附加库

    当我在 VS 2015 中创建一个空项目时 它会自动将这些库放入 附加依赖项 中 kernel32 lib user32 lib gdi32 lib winspool lib comdlg32 lib advapi32 lib shell3
  • 网页执行回发时如何停止在注册表单上?

    我正在做我的最后一年的项目 其中 我在一页上有登录和注册表单 WebForm 当用户点击锚点时Sign Up下拉菜单ddlType 隐藏 和文本框 txtCustName txtEmail and txtConfirmPassword 显示
  • 如何设置 Swashbuckle 与 Microsoft.AspNetCore.Mvc.Versioning

    我们有asp net core webapi 我们添加了Microsoft AspNetCore Mvc Versioning and Swashbuckle拥有招摇的用户界面 我们将控制器指定为 ApiVersion 1 0 Route

随机推荐

  • java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration

    我正在尝试在 Eclipse 中使用 Hibernate 进行初始设置 同时使用 Tomcat 进行部署 我遇到了以下问题 java lang ClassNotFoundException org hibernate cfg Configu
  • Android:AlarmManager 在过去的时间触发

    这是我的警报管理器代码 Intent intent new Intent getBaseContext AlarmReciever class intent setAction com example projectx ACTION Pen
  • 从 System.Type 初始化通用对象

    我需要创建一个泛型类型 但我在编译时不知道该类型 我想这样做 Type t typeof whatever var list new List
  • python3.0上的安装工具

    我试图为 python3 0 安装 setuptool 包 但不幸的是 我尝试安装它说模块名称 dist 丢失 请帮我解决这个问题 截至 2013 年 3 月的编辑 请查看下面已接受的答案 以获取 LennartRegebro 的最新回复
  • 如何访问Django模板中的动态键? [复制]

    这个问题在这里已经有答案了 请看下面的代码 for row in df src iterrows tr td td tr
  • cURL 加载时间太长

    我使用 cURL 调用 PHP 中的 REST 端点来获取一些 JSON 数据
  • 如何使用 Xcode 调试 dylib?

    我有一个 arith 库的 Xcode 项目 我可以使用调试配置来构建它 并且我需要调试它 我怎样才能做到这一点 理想的方法是设置测试代码以在项目文件中构建执行 然后在 arith 库的源代码中设置断点 但是 Xcode arith 项目似
  • 使用 flink runner 在梁上进行 Tensorflow 变换

    这可能看起来很愚蠢 但这是我在这里发表的第一篇文章 抱歉做错了什么 我目前正在使用 python2 7 使用 TFX 0 11 即 tfdv tft tfserving 和tensorflow 1 11 构建一个简单的 ML 管道 我目前有
  • 捆绑安装时出现致命错误(安装 libv8 时)

    我在 Windows 7 32 位 上工作 在捆绑安装时出现错误 Installing libv8 3 3 10 4 with native extensions Unfortunately a fatal error has occurr
  • 如何在组件ContextMenu中的primeNG中使用属性appendTo?

    我正在尝试使用该属性appendTo在组件中上下文菜单 https www primefaces org primeng contextmenu 但我想将行为附加到一个元素 例如 div 在您想要附加的元素上添加主题标签 myHashTag
  • 查找沿轴不包括零的 numpy 数组的最小值/最大值

    有一种很好的方法可以找到数组中不包括零的非零最小值 最大值here https stackoverflow com questions 7164397 find the min max excluding zeros in a numpy
  • 将表单 POST 与查询字符串组合是否有效?

    例如 我知道在大多数 MVC 框架中 查询字符串参数和表单参数都可供处理代码使用 并且通常合并为一组参数 通常 POST 优先 但是 根据 HTTP 规范 这样做是否有效 假设您要发布到 http 1 2 3 4 MyApplication
  • Powershell:如何测试一行文本是否包含换行符或回车符?

    如何测试文本文件的第一行是否以 r 或 n 终止 我尝试了类似于以下的各种演绎 我不确定导入到 powershell 中的字符串 文件的第一行 是否包含不可见字符 我也尝试使用 StreamReader 方法读取该行 但无济于事 maste
  • 如何导出C#方法?

    我们如何导出 C 方法 我有一个 dll 我想通过 ctypes 模块在 Python 语言中使用它的方法 因为我需要使用 ctypes 模块 所以我需要导出 C 方法 以便它们在 Python 中可见 那么 如何导出 C 方法 就像在 C
  • 更改 gridview 以呈现 head 元素

    我看过一些其他关于如何实现此功能的帖子 但是 它们似乎都不关心您将 GridView 子类化为您自己的自定义服务器控件的情况 我试图设置这些属性以使 GridView 呈现 thead 元素 但我不断收到空引用异常 有接受者吗 这是 Dat
  • CoordinatorLayout 内的水平 RecyclerView

    我是 Android 开发新手 我正在 android lollipop 设备中使用 CoordinatorLayout 问题是 我有一个具有水平滚动的回收器视图 在滚动具有垂直滚动效果的回收器视图时会折叠 如果我不滚动水平回收器视图 如果
  • 最后一个窗口关闭时关闭 SwiftUI 应用程序[重复]

    这个问题在这里已经有答案了 当用户关闭最后一个窗口时 是否可以关闭 macOS SwiftUI 应用程序 类似于applicationShouldTerminateAfterLastWindowClosed应用程序委托函数 func app
  • 通过并发删除维护名称的唯一对象

    我正在使用以下编程习惯 我保持同步 HashMap 具有名称与对象的关联 要查找 对象的名称我使用以下代码 MyObject getObject String name synchronized map MyObject obj map g
  • 如何在 NodeJS 中维护请求会话

    我正在尝试使用NodeJS抓取需要登录的网站POST 然后 一旦我登录 我就可以通过以下方式访问单独的网页GET 现在的第一个问题是登录 我尝试过使用request to POST登录信息 但我得到的响应似乎没有登录 exports get
  • 空流,我必须包含 ostream 吗?

    我正在写一个记录器 如果禁用 这是定义 LOG 宏的代码 ifdef NO LOG include