每日总结
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;
}