c++ 0x Lambda :在自己的项目中使用

《C++0x漫谈》系列之:瘦身前后——兼谈语言进化 瘦身前后——兼谈语言进化 By 刘未鹏(pongba)C++的罗浮宫(http://blog.youkuaiyun.com/pongba)  《C++0x漫谈》系列导言 这个系列其实早就想写了,断断续续关注C++0x也大约有两年余了,其间看着各个重要proposals一路review过来:rvalue-references,concepts,memory-model,varia 阅读详情

最近项目里想用Lambda函数,但是网上找到的都是怎么在stl里使用,目前没有搜到在自己项目中使用的。经过几天的努力已经找到了使用方法,分享如下:


1.使用模板

Lambda本质上就是一个匿名的仿函数,因此模板函数里直接使用 operator ()来操作就行了

自己的模板函数:

template<class T>
int lambda_test(const T& t)
{
	int i = 1234;
	return t(i);
}
测试这个模板函数:

int ret = lambda_test([](int i)->int{
		return i;
	});

//ret=1234

2.类的方法使用Lambda函数方法同上

class lambda_test2
{
public:

	template<class T>
	int test(const T& t)
	{
		int i = 1234;
		return t(i);
	}
};

测试代码:

	lambda_test2 test2;
	int ret2 = test2.test([](int i)->int{
		return i;
	});

//ret2=1234

3.使用tr1::function来传递Lambda的对象

上面使用模板来传递Lambda对象,这儿使用更普通的方法来实现:用Lambda的类型来传递

int lambda_test3(const tr1::function<int (int i)> &f)
{
	int i = 1234;
	return f(i);
}

测试代码:

int ret3 = lambda_test3([](int i){
		return i;
	});

//ret3=1234

4.如果某个类内部需要多次使用Lambda函数,则需要保存Lambda函数的对象

class lambda_test4
{
private:
	tr1::function<int (int i)> m_functor1;
	tr1::function<int (int i)> m_functor2;
public:

	//接收并保存lambda对象,方法1:
	template<class T>
	lambda_test4(const T& t):m_functor1(t){}


	//接收并保存lambda对象,方法2:
	void setLambda(const tr1::function<int (int i)> & f)
	{
		m_functor2 = f;
	}

	int test1()
	{
		int i = 1234;
		return m_functor1(i);
	}

	int test2()
	{
		int j = 4567;
		return m_functor2(j);
	}
};

测试代码:

lambda_test4 test4([](int i){
		return i;
	});

	test4.setLambda([](int i){
		return i*2;
	});
	int ret4 = test4.test1();
	int ret5 = test4.test2();

//ret4:1234
//ret5:9134


5.注意包含头文件:

#include <functional>
using namespace std;

6.遇到的一个小问题

在使用的时候出现了如下编译错误:

1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxresult(28): error C2825: '_Fty': 当后面跟“::”时必须为类或命名空间
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxresult(40): 参见对正在编译的类 模板 实例化“std::tr1::_Result_type2<__formal,_Fty,_Arg0,_Arg1>”的引用
1>          with
1>          [
1>              __formal=false,
1>              _Fty=__w64 unsigned int,
1>              _Arg0=std::tr1::_Nil &,
1>              _Arg1=std::tr1::_Nil &
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxresult(597): 参见对正在编译的类 模板 实例化“std::tr1::_Result_of2<_Fty,_Farg0,_Farg1>”的引用
1>          with
1>          [
1>              _Fty=__w64 unsigned int,
1>              _Farg0=std::tr1::_Nil &,
1>              _Farg1=std::tr1::_Nil &
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xrefwrap(28): 参见对正在编译的类 模板 实例化“std::tr1::_Result_of<_Ty>”的引用
1>          with
1>          [
1>              _Ty=__w64 unsigned int (std::tr1::_Nil &,std::tr1::_Nil &)
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxbind1(273): 参见对正在编译的类 模板 实例化“std::tr1::result_of<_Fty>”的引用
1>          with
1>          [
1>              _Fty=__w64 unsigned int (std::tr1::_Nil &,std::tr1::_Nil &)
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxbind0(10): 参见对正在编译的类 模板 实例化“std::tr1::_Bind2<_Callable,_Arg0,_Arg1>::_Return<_Barg0,_Barg1,_Barg2,_Barg3,_Barg4,_Barg5,_Barg6,_Barg7,_Barg8,_Barg9>”的引用
1>          with
1>          [
1>              _Callable=std::tr1::_Callable_obj<SOCKET,false>,
1>              _Arg0=sockaddr *,
1>              _Arg1=unsigned int,
1>              _Barg0=std::tr1::_Nil &,
1>              _Barg1=std::tr1::_Nil &,
1>              _Barg2=std::tr1::_Nil &,
1>              _Barg3=std::tr1::_Nil &,
1>              _Barg4=std::tr1::_Nil &,
1>              _Barg5=std::tr1::_Nil &,
1>              _Barg6=std::tr1::_Nil &,
1>              _Barg7=std::tr1::_Nil &,
1>              _Barg8=std::tr1::_Nil &,
1>              _Barg9=std::tr1::_Nil &
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\functional(408): 参见对正在编译的类 模板 实例化“std::tr1::_Bind_base<_Ret,_BindN>”的引用
1>          with
1>          [
1>              _Ret=std::tr1::_Notforced,
1>              _BindN=std::tr1::_Bind2<std::tr1::_Callable_obj<SOCKET,false>,sockaddr *,unsigned int>
1>          ]
1>          d:\dropbox\vc\code\mhc\mhc\maindlg.cpp(598): 参见对正在编译的类 模板 实例化“std::tr1::_Bind_fty<_Fty,_Ret,_BindN>”的引用
1>          with
1>          [
1>              _Fty=SOCKET,
1>              _Ret=std::tr1::_Notforced,
1>              _BindN=std::tr1::_Bind2<std::tr1::_Callable_obj<SOCKET,false>,sockaddr *,unsigned int>
1>          ]
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxresult(28): error C2903: “result”: 符号既不是类 模板 也不是函数 模板
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxresult(28): error C2039: “result”: 不是“`global namespace'”的成员
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxresult(28): error C2143: 语法错误 : 缺少“;”(在“<”的前面)
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxresult(28): error C2039: “type”: 不是“`global namespace'”的成员
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxresult(28): error C2238: 意外的标记位于“;”之前
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxresult(40): error C2039: “_Type”: 不是“std::tr1::_Result_type2<__formal,_Fty,_Arg0,_Arg1>”的成员
1>          with
1>          [
1>              __formal=false,
1>              _Fty=__w64 unsigned int,
1>              _Arg0=std::tr1::_Nil &,
1>              _Arg1=std::tr1::_Nil &
1>          ]
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxresult(40): error C2146: 语法错误: 缺少“;”(在标识符“_Type”的前面)
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxresult(40): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxresult(40): error C2602: “std::tr1::_Result_of2<_Fty,_Farg0,_Farg1>::_Type”不是“std::tr1::_Result_of2<_Fty,_Farg0,_Farg1>”基类的成员
1>          with
1>          [
1>              _Fty=__w64 unsigned int,
1>              _Farg0=std::tr1::_Nil &,
1>              _Farg1=std::tr1::_Nil &
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxresult(40) : 参见“std::tr1::_Result_of2<_Fty,_Farg0,_Farg1>::_Type”的声明
1>          with
1>          [
1>              _Fty=__w64 unsigned int,
1>              _Farg0=std::tr1::_Nil &,
1>              _Farg1=std::tr1::_Nil &
1>          ]
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xxresult(40): error C2868: “std::tr1::_Result_of2<_Fty,_Farg0,_Farg1>::_Type”: 非法的 using 声明语法;应输入限定名
1>          with
1>          [
1>              _Fty=__w64 unsigned int,
1>              _Farg0=std::tr1::_Nil &,
1>              _Farg1=std::tr1::_Nil &
1>          ]
1>d:\dropbox\vc\code\mhc\mhc\maindlg.cpp(598): error C2678: 二进制“==”: 没有找到接受“std::tr1::_Bind_fty<_Fty,_Ret,_BindN>”类型的左操作数的运算符(或没有可接受的转换)
1>          with
1>          [
1>              _Fty=SOCKET,
1>              _Ret=std::tr1::_Notforced,
1>              _BindN=std::tr1::_Bind2<std::tr1::_Callable_obj<SOCKET,false>,sockaddr *,unsigned int>
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\exception(470): 可能是“bool std::operator ==(const std::_Exception_ptr &,const std::_Exception_ptr &)”
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\exception(475): 或       “bool std::operator ==(std::_Null_type,const std::_Exception_ptr &)”
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\exception(481): 或       “bool std::operator ==(const std::_Exception_ptr &,std::_Null_type)”
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\guiddef.h(192): 或       “int operator ==(const GUID &,const GUID &)”
1>          c:\program files (x86)\microsoft sdks\windows\v7.0a\include\propkeydef.h(32): 或       “int operator ==(const PROPERTYKEY &,const PROPERTYKEY &)”
1>          尝试匹配参数列表“(std::tr1::_Bind_fty<_Fty,_Ret,_BindN>, int)”时
1>          with
1>          [
1>              _Fty=SOCKET,
1>              _Ret=std::tr1::_Notforced,
1>              _BindN=std::tr1::_Bind2<std::tr1::_Callable_obj<SOCKET,false>,sockaddr *,unsigned int>
1>          ]


模板出现问题就一大堆提示,要慢慢找
解决方法:socket的bind与function的bind冲突了...,只需要把调用socket的bind(xxxx)改成:::bind(xxx)即可!!

    if (bind(m_sock, (sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR)
    {
        return false;
    }

改为:

    if (::bind(m_sock, (sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR)
    {
        return false;
    }


7.完整的测试代码,vc2010编译测试通过

#include <functional>
using namespace std;

template<class T>
int lambda_test(const T& t)
{
	int i = 1234;
	return t(i);
}

class lambda_test2
{
public:

	template<class T>
	int test(const T& t)
	{
		int i = 1234;
		return t(i);
	}

};


class lambda_test4
{
private:
	tr1::function<int (int i)> m_functor1;
	tr1::function<int (int i)> m_functor2;
public:

	//接收并保存lambda对象,方法1:
	template<class T>
	lambda_test4(const T& t):m_functor1(t){}


	//接收并保存lambda对象,方法2:
	void setLambda(const tr1::function<int (int i)> & f)
	{
		m_functor2 = f;
	}

	int test1()
	{
		int i = 1234;
		return m_functor1(i);
	}

	int test2()
	{
		int j = 4567;
		return m_functor2(j);
	}
};
int lambda_test3(const tr1::function<int (int i)> &f)
{
	int i = 1234;
	return f(i);
}

int main()
{
	int ret = lambda_test([](int i)->int{
		return i;
	});

	lambda_test2 test2;
	int ret2 = test2.test([](int i)->int{
		return i;
	});

	int ret3 = lambda_test3([](int i){
		return i;
	});

	lambda_test4 test4([](int i){
		return i;
	});

	test4.setLambda([](int i){
		return i*2;
	});
	int ret4 = test4.test1();
	int ret5 = test4.test2();

	return 0;
}




《C++0x漫谈》系列之:Auto的故事 《C++0x漫谈》系列之:Auto的故事 By 刘未鹏(pongba)C++的罗浮宫(http://blog.youkuaiyun.com/pongba)  《C++0x漫谈》系列导言 这个系列其实早就想写了,断断续续关注C++0x也大约有两年余了,其间看着各个重要proposals一路review过来:rvalue-references,concepts,memory-mod 阅读详情

相关推荐

基于EtherCAT的AM402与SV660N、IS620N伺服运动控制实战指南

本文详细介绍了基于EtherCAT总线的汇川AM402 PLC与SV660N、IS620N伺服驱动器构建运动控制系统的完整实战流程。内容涵盖硬件平台搭建、软件组态、关键参数设置、InoProShop编程及调试技巧,旨在帮助工程师快速掌握这一高精度、高响应的工业自动化解决方案。

weixin_29204205的博客 400

C++ lambda(匿名函数)捕获自己

今天写算法题时无意间遇到一种情况,我的深度优先遍历函数要在函数内调用自身,如果是普通函数没什么问题,但如果是 匿名函数 的话会有一些问题,甚至问ai,ai也没打上来,上网搜了半天,才找到这个的解答,故作此文。

l23456789mmmmm的博客 893

Globus 数据下载

Globus 大数据下载流程~

weixin_43978558的博客 6616

头痛的问题

<br />     _session->_event_data_available = std::tr1::bind(&commander::on_data_davailable, this, std::tr1::placeholders::_1, std::tr1::placeholders::_2);<br /><br />  _session->_event_data_read_complete = std::tr1::bind(&commander::on_data_complete, this)

HelloKitty_me的专栏 1278

Lmbench测试集 --- 延迟测试工具lat_mem_rd

lmbench测试集简介 以及 lat_mem_rd延迟测试工具: 如何测试、测试结果、源码分析

MonologueYY的博客 1万+

Altium Concord Pro 的应用范围,安装,和使用范围

Altium Concord Pro 的应用范围,安装,和使用范围。保证满足两者软件的最低安装要求。 Altium Concord Pro 是配合Digapcb,和MCAD,Altium 和相应机械设计软件的基础和交换桥梁

hanzhaos的博客 1119

调试编译错误信息总结

通用问题 debug下正常,release下崩溃 大部分是变量未初始化,debug 、release下 变量未初始化时,给的默认值不同 具体问题 0 unresolved external symbol error LNK2019: unresolved external symbol error LNK2001: unres..............................

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 8226

基于plc的工厂除尘控制系统设计(S7-200、仿真、调试、高质量)

工业作为我国第二支柱产业,在近十几年来发展非常迅速,虽然带了了可观的经济效益,但在工业生产中所产生的大量粉尘气体对大气的污染现象也不容忽视。为减少工业粉尘对环境的污染,世界各国制定了严格的环境保护要求。为了减少工业中粉尘的排放,除尘器的研发改良,以及燃煤的使用等等都在不断更改以符合粉尘排放标准。而目前最先进的除尘设备无机膜除尘器具备除尘效率高,稳定性好,结构紧凑易于维护等优点,且无机膜对于粉尘吸附效率高,抗腐蚀能力优秀,耐高温,因此能更有效应用于高温烟气的除尘。本文根据PLC技术在除尘方面的应用,来优化设计

老高的博客 1279

c++中 lambda函数中调用自身类函数

类函数中得lambda表达式中一般不能调用 自身类得函数 有两种办法可以调用: 1: 将需要调用得函数编程静态函数, 那么可以在lambda中直接调用 2: 将this指针传入进lambda函数 XZOrdering* ths = this; auto checkValue = [&ranges, &remaining, isContained, isOverlapped, ths](XElement & quad, short level) { ull

CJJ的专栏 2387

【技术解析】LUT-Fuse:如何通过可学习查找表与蒸馏技术,为边缘设备解锁实时图像融合

本文解析了ICCV 2025提出的LUT-Fuse技术,它通过可学习查找表与知识蒸馏,解决了边缘设备上图像融合的质量、速度与功耗“不可能三角”。该方法将复杂计算预编译为高速查找表,在Jetson等设备上实现100+ FPS的实时红外-可见光图像融合,为无人机、安防等应用提供了高效解决方案。

code8的博客 494

在zcu102开发板上使用PetaLinux运行Qt程序

请注意,上述步骤只是一个概述,并且可能需要根据特定的开发环境和要求进行适当的调整。如果你是一个初学者或者对于这些领域不太熟悉,建议在尝试之前阅读相关的文档和教程,或者寻求专业人士的帮助。在"Projects"菜单中,选择"Build & Run"选项,并在"Build"步骤中选择正确的工具链。注意:如果Qt程序依赖于其他库文件,需要将这些库文件一起复制到PetaLinux工程的根文件系统目录中,并在Qt程序中正确地配置库文件路径。如果一切顺利,PetaLinux系统将启动,并自动运行Qt程序。

UhxzCombined的博客 698

MFC中使用自定义CObject派生类重载“=”“==”操作符 error C2248: “CObject::operator =” error C2678: 二进制“==”

近期编程想用CList维护一个对象,来方便的实现增,删,改,查,里面要放多个元素,想实现这种,就要自己写结构体,或是类。类的话就让他派生自CObject吧,然后接下来会遇到两个问题,我在这里整理一下我在网上寻求的解决方法,文中所写是否是问题的标准解决办法,有待高手指教,我只是发此文章帮助和我一样遇到问题的人,和记录一下自己的学习历程。     接下来我要重现我遇到的问题,再接着写我找到的解决办法

panshiqu的专栏 3269

Cadence OrCAD Capture 软件自带元件原理图符号库目录与介绍图文视频教程

硬件工程师在开始原理图设计时,应该首先拥有自己的元件原理图符号库。基于Capture进行原理图设计的一个很大的优点就是,软件自带的元件库比较全。本文简单介绍Capture软件自带元件库。

fydar的博客 5578

JSPP – Morph C++ Into Javascript

<br /><br />C++ has a new standard called C++0x (Wikipedia, Bjarne Stroustrup) that includes many interesting features such as Lambda, For Each, List Initialization ... Those features are so powerful that they allow to write C++ as if it was Javascript.<br

岳麓听雨专栏 8505

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

linux ndk编译c 项目,Android NDK使用GCC4.7 toolchain编译项目

项目引入了一些cocos2d-x 3.0的代码,大量使用c++11的新特性。这些在gcc4.6是不完全支持的,但是gcc4.7绝大部分已经支持。设置toolchain的方法是在Application.mk中设置:NDK_TOOLCHAIN_VERSION = 4.7为了确认是否设置成功,在ndk-build调用时增加参数V=1。即 ndk-build v=1 ..其他参数..这里在说一下关于新标准...

weixin_35520863的博客 301

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

android ndk使用gcc4.7 toolchain编译项目

项目引入了一些cocos2d-x 3.0的代码,大量使用c++11的新特性。这些在gcc4.6是不完全支持的,但是gcc4.7绝大部分已经支持。 设置toolchain的方法是在Application.mk中设置: NDK_TOOLCHAIN_VERSION = 4.7 为了确认是否设置成功,在ndk-build调用时增加参数V=1。即 ndk-build v=1 ..其他参...

各研发管理 118

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Cocos2d-x 3.0final 终结者系列教程01-无论是从cocos2d-x2.x升级到版本cocos2d-x3.x

诡谲的江湖,易变。 花花世界,车来人往。 最终确定。安家,将Cocos2d-x3.0final相关技术精加工的版本。并推出了博客文章, 不为他人,只为自己。 学习交流QQ群:301954471 ------------------------------------华丽切割线----------------------------------------------...

weixin_30299709的博客 106

C++11中Lambda的使用

C++11标准中新增了lambda函数 关于lambda函数,百度百科中的解释是这样的: Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。 在C++11前,为实现一个让奇数排在前面,偶数排在后面,并且从小到大排列的程序可能要这样写: // 编译环境:MinGW-W64

jcShan709的博客 4861

C++0X的三件好东西(零)

先说一些废话,可以跳过不看。 我主张,在具备基础之后,学习任何新东西,都要抓住主线,突出重点。对于关键理论的学习,要集中精力,速战速决。而旁枝末节和非本质性的知识内容,完全可以留给实践去零敲碎打。 原因是这样的,任何一个高级的知识内容,其中都只有一小部分是有思想创新、有重大影响的,而其它很多东西都是琐碎的、非本质的。因此,集中学习时必须把握住真正重要那部分,把其它东西留给实践。对于重点知识,只有集中学习其理论,才能确保体系性、连贯性、正确性,而对于那些旁枝末节,只有边干边学能够让你了解它们的真实价值是大

孟岩 7万+

cocos2d-x v3.0新特性及使用

原地址:点击打开链接 运行环境需求: Android 2.3 or neweriOS 5.0 or newerOS X 10.7 or newerWindows (which version?)Linux Ubuntu 12.04 (or newer) 编译环境需求: Xcode 4.6 (for iOS or Mac)gcc 4.7 for Linux o

蚊子 1015

c++0x lambda表达式

分享 C++0x语言新特性一览(2)(转自维基百科) 来源: 李皓骅的日志 Lambda functions and expressions Lambda函数及表达式 在标准C++语言中,尤其在使用诸如sort和find之类的标准库算法函数时,用户总是希望在算法函数调用的触发点附近定义谓词函数。在这一方面语言中只有一种机制可供利用:在函数中定义类。通常这种做法既啰嗦又笨重。另外,

sourthstar的专栏 1446

C++——Lambda函数

4、Lambda函数 lambda 表达式可以说是 c++11 引用的最重要的特性之一, 它定义了一个匿名函数, 可以捕获一定范围的变量在函数内部使用, 一般有如下语法形式: auto func = [capture] (params) opt -> ret { func_body; }; 其中 func 是可以当作 lambda 表达式的名字,作为一个函数使用,capture 是捕获列表,params 是参数表,opt: 不需要可以省略。 (mutable: 可以修改按值传递进来的拷贝(注意是能

勿在浮沙築高台 1万+

C++0x

C++0x是一个新的C++标准 现行的C++标准是C++98,就是98年制定出来的 C++0x是计划在200X 制定,后来被定成C++09 美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C++(

特权份子的专栏 664

C++中的Lambda函数

一 函数语法 我们平时调用函数的时候,都是需要被调用函数的函数名,但是匿名函数就不需要函数名,而且直接写在需要调用的地方,对于以前没用过的小伙伴来说,第一眼看见了这语法可能很迷惑。 C++11的基本语法格式为: [capture](parameters) -> return_type { /* ... */ } (1) [capture] :[]内为外部变量的传递方式,值、引用等,如下 [] //表示的是在lambda定义之前的域,对外部参数的调用; [=] //表示外部参

weixin_42887343的博客 1万+

新C++标准:C++0x教程(一):导论

译者:yurunsun@gmail.com 新浪微博@孙雨润 新浪博客 优快云博客日期:2012年11月12日 <!-- body {font-size:14px; line-height:1.6; color:#333333; font:13px/1.4 Helvetica,arial,freesans,clean,sans-serif} body > *:f

雨润的技术博客 3400
上一篇: qbox网盘
下一篇: x64的操作系统使用x86的Golang:Sublime Text2 的Go Build 插件问题
varding
博客等级 码龄17年 115粉丝 116原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值