Tag: gcc extensions

为什么GCC的三元扩展不支持分配?

GCC有一个令人敬畏的三元表达式扩展到C ,它允许我们创建这样的语句: int x = some_var ?: 10; // expands to some_var ? some_var : 10 这真的很好,虽然它不是特别直观,但确实有效。 C语言中的大多数二元运算符都有一个与之关联的附加运算符,允许赋值: x = x + 2; // instead, we can say x += 2; 由于这种情况,以及大多数二进制C运算符( + , – , * , / , % , | , & , ^ )的范数,为什么不是三元扩展运算符的情况: int x = …; x ?:= 2; […]

用Clang的嵌套函数重写GCC清理宏?

我正在尝试解决第三方库中的问题。 问题是库使用GCC嵌套在宏中的嵌套函数,并且Clang不支持嵌套函数,并且没有计划这样做(参见, Clang Bug 6378 – 错误:函数上的非法存储类 )。 这是我和Clang痛点的宏观: #define RAII_VAR(vartype, varname, initval, dtor) \ /* Prototype needed due to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36774 */ \ auto void _dtor_ ## varname (vartype * v); \ void _dtor_ ## varname (vartype * v) { dtor(*v); } \ vartype varname __attribute__((cleanup(_dtor_ ## varname))) = (initval) 以下是它的使用方法(来自代码注释): * void do_stuff(const char […]