当前位置: 首页 > java >正文

C++ 日志输出(宏定义)

文章目录

  • 一、简介
  • 二、实现代码
  • 三、实现效果

一、简介

这里定义一些简单的日志输出宏定义,主要是为了方便后续的使用,后面也会在此基础上进一步完善,现阶段仅仅提供几个最基础的函数。

二、实现代码

这里依赖于之前的对字符格式化输出,相关的代码可以参阅之前的博客。

Log.hpp

#pragma once#include "FMTString.hpp"//
// 定义一些检查函数
//#define CHECK_STRING_FMT_LOG(description, ...) \std::printf(                                   \"[%s:%d] %s", __FILE__, __LINE__,        \::FMT::formatString(description, ##__VA_ARGS__).c_str())#define CHECK_STRING_FMT_PRINT(description, ...) \std::printf(                                     \"%s\n",                                      \::FMT::formatString(description, ##__VA_ARGS__).c_str())#define CHECK_ENSURE_FAILED(description, ...)            \do {                                                    \CHECK_STRING_FMT_LOG("CHECK_ENSURE failed:");      \CHECK_STRING_FMT_PRINT(description, ##__VA_ARGS__); \} while (false)//std::abort();          \     // 如果遇到错误,会强制停止#define CHECK_ENSURE(expr, description, ...)           \do {                                                  \if (!(expr)) {                                      \CHECK_ENSURE_FAILED(description, ##__VA_ARGS__); \}                                                   \} while (false)

main.cpp

// 标准文件
#include <iostream>
#include <string>#include "Log.hpp"int main(int, char** argv)
{CHECK_ENSURE(1 == 0, "1 == 0 is false!");system("pause");return 0;
}

三、实现效果

http://www.xdnf.cn/news/6074.html

相关文章:

  • 无人机数据处理与特征提取技术分析!
  • 劫持__security_check_cookie
  • 入门OpenTelemetry——部署OpenTelemetry
  • 分布式1(cap base理论 锁 事务 幂等性 rpc)
  • 微信小程序之将轮播图设计为组件
  • “强强联手,智启未来”凯创未来与绿算技术共筑高端智能家居及智能照明领域新生态
  • 【Alist+RaiDrive挂载网盘到本地磁盘】
  • 面向对象设计模式之代理模式详解
  • 如何查看SD卡存储扇区分配表?有什么不同之处
  • 远程连接电脑的方法?异地远程桌面连接和三方软件实现
  • Java 重试机制详解
  • QT之QComboBox组件
  • 软考 系统架构设计师系列知识点之杂项集萃(59)
  • 【springcloud学习(dalston.sr1)】Eureka单个服务端的搭建(含源代码)(三)
  • Python 常用模块(八):logging模块
  • 基于GpuGeek平台的深度学习项目
  • Keil5 MDK 安装教程
  • LeetCode 热题 100 35.搜索插入位置
  • python打包exe报错:处理文件时错误:Excel xlsx file; not supported
  • iOS Safari调试教程
  • vue使用路由技术实现登录成功后跳转到首页
  • 【Vue 3 + Vue Router 4】如何正确重置路由实例(resetRouter)——避免“VueRouter is not defined”错误
  • 数据结构与算法:状压dp
  • 反向传播算法——矩阵形式递推公式——ReLU传递函数
  • 如何保证RabbitMQ消息的顺序性?
  • 简单易懂的JavaScript中的this指针
  • 现代计算机图形学Games101入门笔记(三)
  • Node.js中MongoDB连接的进阶模块化封装
  • hadoop中spark基本介绍
  • 从零构建知识图谱:使用大语言模型处理复杂数据的11步实践指南