Loading

C 语言 GCC 内嵌函数实现 Lambda 表达式

代码 ({ //函数实现 函数名称; })

#include <stdio.h>
#include <malloc.h>


#define action_lambda(function_body) \
  ({void lambda_func function_body lambda_func;})

#define func_lambda(return_type, function_body) \
  ({return_type lambda_func function_body lambda_func;})


typedef void (*Action)(char** message);

void Initial(Action options);

static char* g_opts = NULL;

int main(int argc, char **argv)
{
  char* msgs = "test";
  // 调用
  Initial(action_lambda((char** msg){ *msg = msgs; printf("g_opts = %s.", g_opts); }));
  
  return 0;
}

void Initial(Action options)
{
  options(&g_opts);
}

posted @ 2023-06-20 17:34  microestc  阅读(44)  评论(0编辑  收藏  举报