我以为可以在for循环中初始化几个变量:
for (int i = 0, char* ptr = bam; i < 10; i++) { ... }
Run Code Online (Sandbox Code Playgroud)
但我发现这是不可能的.GCC给出以下错误:
错误:'char'之前的预期unqualified-id
你是否真的无法在for循环中初始化不同类型的变量?
我认为GCC扩展__attribute__((cleanup))是一个好主意,至少在某些情况下,但我无法弄清楚如何以一种好的方式使用它.我所做的一切看起来仍然很烦人.
我看到了很多的代码做#define _cleanup_(x) __attribute__((cleanup(x))只是为了少打字,但它有没有办法通过有没有一个标准功能一样free或者closedir,fclose等?
我看到我不能写:
__attribute__((cleanup(free))) char *foo = malloc(10);
Run Code Online (Sandbox Code Playgroud)
因为清理回调会收到char**指针,所以我必须总是这样写:
static void free_char(char **ptr) { free(*ptr); }
__cleanup__((free_char)) char *foo = malloc(10);
Run Code Online (Sandbox Code Playgroud)
这非常烦人,最烦人的部分是为你需要的所有类型定义这样的清理函数,因为显然你不能只为它定义它void **.避免这些事情的最佳方法是什么?