每日总结
20240306
1. 断言测试判断
#include <iostream>
#include <assert.h>
#include <cassert>
#include <stdio.h>#define STR_OK          "[\x1b[1;32m OK \x1b[0m]"
#define STR_FAIL        "[\x1b[1;31mFAIL\x1b[0m]"#define passert(c) \do { \int r = (c); \if (r) \printf(" " STR_OK "  %s %s():%d  %s\n", __FILE__, __func__, __LINE__, #c); \else \printf(" " STR_FAIL "  %s %s():%d  %s\n", __FILE__, __func__, __LINE__, #c); \} while(0)#define ptest() \printf("\nStarting test %s():%d\n", __func__, __LINE__)int main(int argc, char const *argv[])
{for (size_t i = 0; i < 10; i++){passert(i%2 == 0);}return 0;
}
[\x1b[1;32m OK \x1b[0m] 这个字符串包含了 ANSI 转义序列,用于在终端中设置文本的样式和颜色。让我们逐个解释每个参数的含义:
-  [\x1b[1;32m:这部分是设置文本样式和颜色的起始序列。它由以下几个部分组成:- [\x1b:- \x1b是 ASCII Escape 字符,表示转义序列的开始。
- [1;32m:- [1;32m是 ANSI 转义序列中设置文本样式和颜色的部分。具体含义如下:- [1:表示设置高亮(或加粗)文本的样式。
- ;:分隔符,用于分隔不同的设置。
- 32:表示设置文本颜色为绿色。32 是绿色的 ANSI 色号。
 
 
-  OK:这部分是表示测试通过的文本。
-  \x1b[0m]:这部分是恢复文本样式的序列。它由以下几个部分组成:- \x1b:ASCII Escape 字符,表示转义序列的开始。
- [0m:- [0m是 ANSI 转义序列中恢复默认文本样式的部分。具体含义如下:- 0:表示恢复默认文本样式。
- m:结束 ANSI 转义序列的标志。
 
 
使用这个字符串可以在终端中将 “OK” 文本输出为绿色并加粗,以便更直观地显示测试通过的信息。

2. 颜色打印输出
#include <stdio.h>// 定义颜色枚举类型
enum Color {COLOR_RESET = 0,    // 重置COLOR_RED = 31,     // 红色COLOR_GREEN = 32,   // 绿色COLOR_YELLOW = 33,  // 黄色// 可以添加更多的颜色
};// 定义宏,接受三个参数:是否打印、颜色、格式化字符串及其参数
#define printfcolor(print, color, ...) \do { \if (print) { \printf("\x1b[%dm", color); \printf(__VA_ARGS__); \printf("\x1b[0m"); \} \} while(0)int main(int argc, char const *argv[])
{for (size_t i = 0; i < 10; i++){printfcolor(1,i+30,"Hello, world!%d\n",123456);}return 0;
}

 