【发布时间】:2022-01-09 10:33:27
【问题描述】:
这段代码:
#include <stdio.h>
int main()
{
void (^a)(void) = ^ void () { printf("test"); } ;
a();
}
使用 clang -Weverything -pedantic -std=c89(版本 clang-800.0.42.1)在没有警告的情况下编译并打印 test。
我找不到任何有关具有 lambda 的标准 C 的信息,gcc 也有它自己的 lambda 语法,如果存在标准解决方案,他们这样做会很奇怪。
【问题讨论】:
-
无法在 Ubuntu 16.04 上使用
clang version 3.8.0-2ubuntu4进行复制。失败:error: blocks support disabled - compile with -fblocks or pick a deployment target that supports them. -
C 不能有这个代码。编译器特定的东西。
-
嗯,闻起来像 Objective-C。
-
你会认为
-pedantic和-std=c89至少会对这个非标准代码产生警告!