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