首页 > 解决方案 > C 标准的哪一部分允许 LLVM 中的闭包(块)?

问题描述

LLVM C 编译器支持作为闭包的“块”,例如

typedef returnType (^MyTypeName)(parameterTypes);
MyTypeName blockName = ^returnType(parameters) {puts("OK");}; 

这是 C 标准的一部分,还是只是他们的发明来支持 Objective-C?

标签: cobjective-cllvm

解决方案


允许它的 C 标准的部分是 C 2018 4 第 6 段:

……一个符合标准的实现可能有扩展(包括额外的库函数),只要它们不改变任何严格符合的程序的行为。


推荐阅读