GithubHelp home page GithubHelp logo

c-class-helper's Introduction

C Class Helper

简介 | Brief Intro

仓库地址 | Github Repo Address

这是一个为 C 语言学习新手提供的一个日志打印工具,整体功能比较简单,目的是培养刚接触编程的同学学习和养成 Debug 正确方法和好习惯。

注意事项 | FYA

  • 如果您将日志输出到文件中,请注意本工具只会不断追加,不会主动清空日志文件。所以请您做好日志的手动清空或备份管理工作。
    • 换句话说,如果你不希望几次运行的日志全都在同一个文件里无法区分,那么请在每次运行完以后删除日志文件或者重命名它。

设置 | Config

  • 如何设置:修改对应宏定义

工具开关

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

  • 如果您希望日志内容输出,则设置为1,否则设置为0
// Set 0 if you don't want to see logs.
// Set 1 if you want to see logs.
#define SHOW_LOGS 1

输出流

说明

  • 如果您希望日志打印在屏幕上但没有颜色高亮,设置为2
  • 如果您希望日志打印在屏幕上并且有颜色(CMD无法使用),设置为1
  • 如果希望日志打印在文件中,设置为0:
// MODE 0 : Logs will be write to 'CCH_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 CCH_MODE 2

使用 | Usage

导入 | Import

  • 对于尚在学习单文件编程的同学,我们建议你直接复制CClassHelper.h中的所有内容至你的代码的最前。
  • 对于已经知道如何进行多模块编程的同学,我们建议您直接#include "CClassHelper.h"

输出一般日志 | Log

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

  • LOG()的使用方法和printf()基本一致,只需要把printf()语句中的函数名换成LOG即可。

举个例子:

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

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

监控变量 | Variable Monitor

使用SHOW_VAR(CCH_TYPE, CCH_VAR)来监控变量。

  • 其中CCH_TYPE指对应变量在printf()的 format 中所使用的占位符,例如int对应的CCH_TYPE"%d"double对应的CCH_TYPE"%lf"
    • 当然,由于该宏函数的底层使用的是printf(),所以实际上相关的扩展语法都是支持的。比如"%.2lf"
  • CCH_VAR指对应变量;

举个例子:

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

    SHOW_VAR("%d", x);

监控数组 | Array Monitor

使用SHOW_ARR(CCH_TYPE, CCH_ARR_NAME, CCH_ARR_BEGIN, CCH_ARR_END)来监控数组。

  • 其中CCH_TYPE指对应变量在printf()的 format 中所使用的占位符,同上;
  • CCH_ARR_NAME指数组名,例如int a[10];中的a
  • CCH_ARR_BEGINCCH_ARR_END分别为需要监控的数组的始末下表,且左闭右开
    • 具体来说,比如为想监控a[0] a[1] a[2] a[3] ... a[9],那么对应的CCH_ARR_BEGIN0CCH_ARR_END10
    • 换句话来说,这个宏函数只能用来监控一维数组的连续段;

举个例子:

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

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

后续计划

  • 输出为日志文件
  • 支持正常 terminal 下的彩色字体
  • 支持 Windows CMD 下的彩色字体
  • 尝试解决多维数组的监控方案
  • 在监控变量时支持自定义注解语句(目前已经能够实现,但是是否有更优雅的解法)
  • ...

c-class-helper's People

Contributors

isshikihugh avatar leo-934 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.