我在Stretchy_buffer.h中看到了类似的内容:
#define stb_sb_free(a) ((a) ? free(stb__sbraw(a)),0 : 0)
Run Code Online (Sandbox Code Playgroud)
,0致电后的目的是什么free()?
同样,这里有两个奇怪的逗号:
#define stb_sb_add(a,n) (stb__sbmaybegrow(a,n), stb__sbn(a)+=(n), &(a)[stb__sbn(a)-(n)])
Run Code Online (Sandbox Code Playgroud)
似乎正在运行多个语句,但是那不需要分号吗?
这条线会发生什么
#define stb_sb_free(a) ((a) ? free(stb__sbraw(a)),0 : 0)
Run Code Online (Sandbox Code Playgroud)
是,如果与a对应true,free(stb__sbraw(a))则将首先执行,然后0由于将返回,0。
通常,将对所有用逗号分隔的表达式进行求值,但结果具有最右边表达式的类型和值。