【TouxhGFX】集成 之 《Using C code with TouchGFX》
在TouchGFX中使用C代码
您可能已经知道,TouchGFX是用C ++实现的,而TouchGFX API也是C ++。这意味着至少直接与UI相关的代码必须是C ++代码。但是,并不需要整个系统都以C ++实现。
本文介绍了如何在应用程序中混合使用C ++和C。
基于任务的C和C ++分离
一个好的方法是在应用程序的UI任务中使用C ++,在所有其他任务中使用C。
UI任务显然将与TouchGFX API紧密联系在一起,因此主要是C ++代码。如文章 “将UI连接到系统”中所述,我们建议使用OS提供的任务间通信机制在UI任务和其余系统之间传递数据。通常,这意味着在任务之间发送以C结构表示的消息/邮件。这样的结构在C和C ++中都可以理解,因此可以在UI任务(C ++)和系统中的任何其他任务(C或C ++)之间提供方便且可移植的接口。
使用这种方法,您可以使系统中的所有非GUI代码均为常规C代码,而只有GUI任务为C ++。
从C ++调用C函数
如果确实需要从C ++代码中调用C函数,则可以通过添加由extern "C"
以下内容包围的函数声明来轻松实现:
Codefile.cpp: extern "C" { // function prototypes int func(); // OR include header files containing C function declarations #include <example.h> } /// func() and any functions in example.h can now be called from C++ code.
从C调用C ++函数
走另一条路需要更多的工作。严格来讲不可能从C代码调用C ++,因此您将需要创建一个使用C样式名称修饰的C ++包装函数,从而使其可以从C调用。
Codefile.cpp: // The extern declaration makes cpp_func callable from C extern "C" void cpp_func(); // C++ wrapper function implementation. void cpp_func() { // C++ code HAL::getInstance()->someFunction(); } mycode.c: // Declaration of wrapper function void cpp_func(); //cpp_func() is callable from this C code file.
【来源】
再牛逼的梦想也架不住傻逼似的坚持
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2019-02-21 GCC online documentation