glibc的三种缓冲策略

很多朋友可能在初次学习 C 语言时,如果是使用 Unix 环境,可能遇到过如下的问题

1
2
3
4
5
6
#include <stdio.h>
int main()
{
printf("Hey");
return 0;
}

欸我运行完了怎么没输出呢?Google 一番才知道,这是由于所谓缓冲(Buffer)机制导致的

这个时候,你需要在 格式化串的结尾加一个\n,就可以看到输出了

这是因为,标准输出是基于行缓冲(Line Buffered) 策略的,它遇到\n时,会将缓冲区内容打包送出,这才可以看到要输出的字符串

除了行缓冲之外,glibc还有两种策略,详见下节

Read more

使用GNU C扩展实现C的反射

说明:此机制并非传统意义上的反射,仅为一种类似的实现

我最近在写一个 Sandbox,需要根据命令行参数选择对应的规则函数执行。如果硬编码,这是非常痛苦的,所以我在 Google 搜了一会,发现了如下的办法,相比硬编码要好许多。

Read more
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×