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);
}

                
            
        
浙公网安备 33010602011771号