收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
大致等价于:
struct Foo {
Foo(set<int>\* p) {p_ns = p;}
bool operator()(int a) {
auto &ns = \*p-ns;
return ns.find(a);
}
private:
set<int>\* p_ns;
};
...
set<int> ns = {100, 200, 300};
Foo foo(&ns);
cout<< foo(99);
然而……这并不是全部!
在没有捕获任何东西的时候,lambda
其实是等价于普通的函数的!可以用Linux C
中函数pthread_create()
来验证!它只能接收一个参数是void*
,返回值也是void*
的回调函数。
神奇的是,无参的lambda
也可以被pthread_create()
使用!
#include <iostream>
#include <pthread.h>
using namespace std;
struct A {
void\* operator()(void\*) {
cout<<"xxxx"<<endl;
return nullptr;
}
};
int main() {
A a;
a(NULL);
pthread_t t;
//pthread\_create(&t, NULL, a, NULL); // 编译失败
auto cb = [](void\*)->void\* {
cout<<"xxxx"<<endl;
return nullptr;
};
pthread\_create(&t, NULL, cb, NULL); // 编译通过
pthread\_join(t, NULL);
return 0;
}
上面代码还可以再改一下,让cb
去捕获一个变量,比如:
auto cb = [&](void\*)->void\* {
cout<<"xxxx"<<endl;
return nullptr;
};
pthread\_create(&t, NULL, cb, NULL);
这时,给pthread_create()
传入cb
同样会编译失败!错误信息:
cb.cpp: In function ‘int main()’:
cb.cpp:23:30: error: cannot convert ‘main()::<lambda(void\*)>’ to ‘void\* (\*)(void\*)’
23 | pthread\_create(&t, NULL, cb, NULL);
| ^~
| |
| main()::<lambda(void\*)>
In file included from /usr/include/x86_64-linux-gnu/c++/9/bits/gthr-default.h:35,
from /usr/include/x86_64-linux-gnu/c++/9/bits/gthr.h:148,
from /usr/include/c++/9/ext/atomicity.h:35,
from /usr/include/c++/9/bits/ios_base.h:39,
from /usr/include/c++/9/ios:42,
from /usr/include/c++/9/ostream:38,
from /usr/include/c++/9/iostream:39,
from cb.cpp:1:
/usr/include/pthread.h:200:15: note: initializing argument 3 of ‘int pthread\_create(pthread_t\*, const pthread_attr_t\*, void\* (\*)(void\*), void\*)’
200 | void \*(\*__start_routine) (void \*),
| ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
这其实也不难理解,C++在lambda
的设计上也贯彻着零开销 (Zero Overhead
)原则,也就是C++不在性能上干多余的事,显然函数比对象开销更小。所以即使同为lambda
,在有无捕获的时候,其底层实现其实是截然不同的!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
讲解视频,并且后续会持续更新**
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)