花卉网站建设策划书数据库和wordpress
2026/3/18 4:55:56 网站建设 项目流程
花卉网站建设策划书,数据库和wordpress,北京网站建设手机号,网站语言切换功能如何做博主介绍#xff1a;程序喵大人 35 - 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章#xff0c;首发gzh#xff0c;见文末#x1f447;#x…博主介绍程序喵大人35 - 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章首发gzh见文末记得订阅专栏以防走丢C基础系列专栏C语言基础系列专栏C大佬养成攻略专栏C训练营个人网站C之父都说过C20是C语言的一次重大变革引入了大量的新特性。这其中个人认为最重要新特性是这三个Modules、Coroutines、ConceptsModules直接看代码// helloworld.ixxexportmodulehelloworld;// module declarationimportiostream;// import declarationexportvoidhello(){// export declarationstd::coutHello world!\n;}// main.cppimporthelloworld;// import declarationintmain(){hello();}每个C开发者应该都知道include方式是将header中的代码拷贝一份到源文件中在大的工程项目中还有很多冗余的include种种原因导致编译速度相当的慢而modules却大大改善了这种问题。modules使用方式和include差不多但modules使用比include头文件速度更快C全球开发者大会中C之父贴出来过测试数据modules效率比include高了25倍。以后modules肯定会是主流使用方式。Coroutines协程是一种比线程和进程更高效的多任务处理模型。在C20中终于把协程引了进来协程具体还分为有栈协程和无栈协程两者对比无栈协程是更高效的协程。而C20支持的就是无栈协程为此提供了三个关键字co_await暂停执行直到恢复co_yield暂停执行返回一个值co_return完成执行返回一个值这是一段cppreference上协程相关的示例代码#includecoroutine#includeiostream#includestdexcept#includethreadautoswitch_to_new_thread(std::jthreadout){structawaitable{std::jthread*p_out;boolawait_ready(){returnfalse;}voidawait_suspend(std::coroutine_handleh){std::jthreadout*p_out;if(out.joinable())throwstd::runtime_error(Output jthread parameter not empty);outstd::jthread([h]{h.resume();});// Potential undefined behavior: accessing potentially destroyed *this// std::cout New thread ID: p_out-get_id() \n;std::coutNew thread ID: out.get_id()\n;// this is OK}voidawait_resume(){}};returnawaitable{out};}structtask{structpromise_type{taskget_return_object(){return{};}std::suspend_neverinitial_suspend(){return{};}std::suspend_neverfinal_suspend()noexcept{return{};}voidreturn_void(){}voidunhandled_exception(){}};};taskresuming_on_new_thread(std::jthreadout){std::coutCoroutine started on thread: std::this_thread::get_id()\n;co_awaitswitch_to_new_thread(out);// awaiter destroyed herestd::coutCoroutine resumed on thread: std::this_thread::get_id()\n;}intmain(){std::jthread out;resuming_on_new_thread(out);}目前C20只是从语法层面对协程做了支持还没有相关的协程库要想使用协程还需要引入协程库但不可否认C20已经支持了协程以后在这方面肯定会越来越完善。之前参加的C全球开发者大会C之父也说过会全力在C23标准中引入对协程库的支持。ConceptsConcepts在模板编程中起到重大的作用类模板、函数模板和非模板函数(通常是类模板的成员)可以与一个约束相关联这个约束指定了对模板实参的要求这些实参可用于选择最合适的函数重载和模板特化。很多人应该都知道SFINAE在C20前多数都在使用std::enable_if这相当的麻烦代码可读性也不高编译器报错信息也不是很友好而有了Concepts就方便的多。每个Concepts都是一个谓词在编译时计算并成为模板接口的一部分在那里它被用作约束#includestring#includecstddef#includeconceptstemplatetypenameTconceptHashablerequires(T a){{std::hashT{}(a)}-std::convertible_tostd::size_t;};structmeow{};// Constrained C20 function template:templateHashable Tvoidf(T){}intmain(){usingstd::operators;f(abcs);// OK, std::string satisfies Hashable//f(meow{}); // Error: meow does not satisfy Hashable}其实C20还有一些特性我比较喜欢比如std::jthread真真切切的解决了std::thread存在的旧有问题。还有fmt因为cout方式输出复杂的格式很麻烦std::couta b cstd::endl;是不是很麻烦那可以使用printfprintf(%d %d %d \n,a,b,c);但printf需要开发者填入变量格式如果填写有误有可能打印错误也有可能crash某个long long 型使用%d打印会怎么样某个int32_t型使用%lld打印会怎么样某个const char* 型使用%d打印会怎么样某个float型使用%d打印会怎么样所以使用printf会给开发者带来负担一定要在打印前确认变量的类型并且一定要保证配置的输出格式正确我想大多数人可能都会在print某个变量前搜索过打印某个类型需要使用哪种格式吧那用啥呢cout配合format。std::coutstd::format({} {} {} \n,a,b,c);C20其实还有很多有意思的新特性而这些特性在这本《C20高级编程(第5版)》中都有详细的介绍大家感兴趣可以看看。码字不易欢迎大家点赞关注评论谢谢

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询