随笔分类 - C语言
记录C语言学习与使用过程中的点点滴滴。
摘要:在调试代码的时候,经常需要dump一段内存,有时候不得不自己动手写一个函数。 现在先记录一个简单版本的内存打印函数。 const char* hexstr = "0123456789ABCDEF"; void dump(int level, const char* tag, const uint8_
阅读全文
摘要:活用数组定义 // build util #define BUILD_ASSERT(condition) ((void)sizeof(char[1 - 2*!(condition)])) struct some_type { uint32_t buffer[2]; }; #define PROTOC
阅读全文
摘要:在MDK开发环境下,对于某些无法被更改的函数,我们需要更改这些函数执行前后的逻辑,偏偏又无法更改到调用这些函数并已经被封装的代码,这真是让人一筹莫展。 幸好MDK给我们留了一个后门,让我们充分使用“$Sub$$”和“$Super$$”来完成这个目标。 比如某个函数 extern void foo(v
阅读全文
摘要:慢慢记录,不断更新。 控制printf输出指定个数的字符 printf格式字符串中,与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个*代替那个常量,然后在后面提供变量给* void dump_received_string(char *buffer, int length) { pri
阅读全文
摘要:我在STM上,想写一个利用串口打印LOG的函数trace,根据我手上两块板子的硬件设计,他们的串口不一致,但是我想把这个trace函数写成一个统一的源文件,分别放到两个不同的项目里面编译,需要做的仅仅是修改下头文件中定义的串口号而已。 于是我就想到了用宏定义来展开相关的代码。 我定义了一个串口号的宏
阅读全文

浙公网安备 33010602011771号