首页 > 其他分享 >C 语言 GCC 内嵌函数实现 Lambda 表达式

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

时间:2023-06-20 17:46:52浏览次数:33  
标签:function 内嵌 GCC void body char func Lambda 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);
}

标签:function,内嵌,GCC,void,body,char,func,Lambda,lambda
From: https://www.cnblogs.com/microestc/p/17494279.html

相关文章

  • [连载]C#程序设计(15)--- 委托、事件和Lambda表达式
    ......
  • 一个例子帮你搞懂C#语言高级特性系列(02) --- 委托、事件和Lambda表达式
    直接看例子吧:usingSystem;usingSystem.Windows.Forms;usingSystem.Threading;namespaceCom.LoonStudio.Example{publicclassCar{//定义一个汽车事件的委托publicdelegatevoidCarEventHandler(stringmsg);//定义加速事件......
  • Java Lambda 表达式
    Java8引入了Lambda表达式,这是一项令人激动的功能,它为Java开发人员提供了一种简洁而强大的编码方式。本文将深入探讨JavaLambda表达式的概念、语法和使用方法,帮助你充分理解这一重要的特性。简介Lambda表达式是一种匿名函数,它可以作为方法参数传递,并且可以用来简化编写函数式接......
  • C++11:Lambda表达式
    Lambda表达式为了一些简单的函数直接调用封装[var]:表示值传递方式捕捉变量var[=]:表示值传递捕捉所有父作用域中的变量(包括成员函数中的this)[&var]:表示引用传递捕捉变量var[&]:表示引用传递捕捉所有父作用域中的变量(包括成员函数中的this)[this]:表示值传递方式捕捉当前的this指......
  • Java官方笔记9Lambda表达式
    LambdaExpression有了LambdaExpression,就不用再写anonymousclasses。写Lambda,首先要找到它的类型。Thereisarestrictiononthetypeofalambdaexpression:ithastobeafunctionalinterface.函数接口,只有1个抽象方法的接口:@FunctionalInterfacepublicinterfa......
  • VC和GCC静态变量析构顺序不同
    VC和GCC静态变量析构顺序不同(金庆的专栏)静态变量析构顺序正常情况下是构造的反序。但是VC对DLL中的静态变量好像是需等待DLL卸载时再析构,表现为主程序中的静态变量先析构,DLL中的静态变量后析构。VC测试版本为VC2010Express.例如:classA{};sta......
  • MegEngine 使用小技巧:如何做 MegCC 的模型性能评测
    MegCC 是一个深度学习模型编译器,具有以下特点:极轻量级运行时:只在二进制文件中保留所需的计算内核。例如,MobileNetv1的81KB运行时间高性能:每个操作都经过专家精心优化便携:只生成计算代码,易于在Linux、Android、TEE、BareMetal上编译和使用LowMemoryUsagewhileBootIn......
  • GCC/G++选项 -Wl,-Bstatic和-Wl,-Bdynamic
    GCC/G++选项-Wl,-Bstatic和-Wl,-Bdynamic参考https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html gcc使用-Wl传递连接器参数,ld使用-Bdynamic强制连接动态库,-Bstatic强制连接静态库。所以部分静态,部分动态连接这么写:gcc...-Wl,-Bstatic-l<your-static-lib>-Wl,-Bdyn......
  • Java中Lambda表达式
    Demo1:packagecom.itheima.d9_lambda;publicclassLambdaDemo1{publicstaticvoidmain(String[]args){//目标:学会使用lambda的标准格式简化匿名内部类的代码形式Animala=newAnimal(){@Overridepublicvoidrun(......
  • 交叉编译之为RISC v平台编译x86的gcc
    读者应该比较了解交叉编译的概念,一般都是在x86平台下使用gcc编译出其它平台的代码,这里我尝试在RISCv平台下编译出可以在x86平台使用的代码。环境在x86_64平台上编译riscv64-unknown-linux-gnu-gcc编译器,网上教程很多不再赘述在x86_64平台上使用riscv64-unknown-linux-......