Skip to the content.

C Newbie Helper

注意事项 | FYA

使用之前的设置 | Config

说明

设置为1时效果最佳,但对于不熟悉命令行的一般同学我们推荐使用2,在有特殊需求时可以使用0

// MODE 0 : Logs will be write to 'CNH_log.txt' file.
// MODE 1 : Logs will be print to console (colorful for normal terminal).
// MODE 2 : Logs will be print to console (colorless but fine for CMD).
#define CNH_MODE 2

此外,CNH 默认输出到 stderr 中,如果希望它在和 printf 一起使用且顺序不变时,请改为 stdout

使用 | Usage

导入 | Import

显示 | Show

说明:在保留调试代码的情况下,控制是否显示日志内容。

// Run 'demo1.c' to see more!
int main(){
    SET_CNH_SHOW(1);
    LOG("(QWQ) I can be seen!");
	SET_CNH_SHOW(0);
    LOG("(QAQ) I can't be seen!");
}

简化 | Simplify

说明:如果您认为正常的输出过于花哨,CNH提供了两套方案来调整输出的格式。

使用如下方法可以全局性地更改输出格式:

使用BRIEF();NORMAL();可以局部性地修改输出格式:

// Run 'demo2.c' to see more!
int main(){
    SET_CNH_BRIEF_MODE(0);
    LOG("Normal mode here!");
	BRIEF(
		LOG("Brief mode here!");
        LOG("Multiline is ok!");
	);
    LOG("Normal mode here!");

    SET_CNH_BRIEF_MODE(1);
	LOG("Brief mode here!");
    NORMAL(
		LOG("Normal mode here!");
        LOG("Multiline is ok!");
    );
	LOG("Brief mode here!");
}

预览

正常输出模式:

简化输出模式:

一般日志 | Log

使用LOG(...)来输出一般日志。

举个例子:

如果您想在某一处输出一条日志语句:

    char myCharArr[] = "It's OK!";
    LOG("This is a log message. %s", myCharArr);

监控变量 | Variable Monitor

使用SHOW_VAR(CNH_TYPE, CNH_VAR)来监控变量。

举个例子:

如果您想在某一处监控int类型变量x,则在该位置写上:

    SHOW_VAR("%d", x);

监控数组 | Array Monitor

一维数组

使用SHOW_ARR(CNH_TYPE, CNH_ARR_NAME, CNH_ARR_BEGIN, CNH_ARR_END)来监控数组。

举个例子:

如果您想在某一处监控int类型数组a[],范围是a[0]a[10],则在该位置写上:

    SHOW_ARR("%d", a, 0, 10);

二维数组

使用SHOW_2_ARR(CNH_TYPE, CNH_ARR_NAME, CNH_ARR_ROW_NUM, CNH_ARR_COL_NUM)来监控数组。

int a[3][4] = {...};

举个例子:

如果您想在某一处监控上面那个二维数组a[][],则在该位置写上:

    SHOW_2_ARR("%d", a, 3, 4);

任意维数组

使用SHOW_N_ARR(CNH_TYPE, CNH_ARR_NAME, CNH_ELEMENT_SIZE, CNH_SIZE)来监控任意维数组。

如果您想在某一处监控上面那个三维数组a[][],则在该位置写上:

    SHOW_2_ARR("%lf", a, sizeof(double), sizeof(a));