C模块化编程总结

一直以为自己对模块化编程彻底明白了,但是偶尔看到有些条件编译感觉莫名其妙,今天一起做个总结。
1、单个功能模块建立源文件.c,和头文件.h,注意.c后缀对于C语言必须小写,有些编译器(如GCC),会认为大写C后缀是C++文件。
2、对于功能模块内部使用的全局变量、函数不要放到头文件中,应该用static声明放到源文件模块的前面部分,这样做防止多文件链接的时候(编译的时候不会出错)出现函数名、变量名的重名冲突
错误 (即使大小写不同如int a和int A也会)。
3、对于头文件加上#ifndef xxx #define xxx啥是为了防止在同一个源文件中某个头文件被多次引用(又称包含),否则文件重复包含错误,而不是函数重复定义错误。
4、对于头文件中尽量不要去定义变量,变量的定义应该放到源文件中,头文件加extern 声明即可,虽然C语言函数声明头文件中默认加extern,但为了便于理解加上extern.
5、头文件中放什么合适:宏定义、类型重定义、结构体重定义以及该源文件模块需要被外部访问的函数接口、全局变量接口。
6、原则上多个文件之间共享变量不在某个头文件中定义,而是采用第5条规则,源文件中定义头文件中声明,但是,UCOSII实时操作系统中有一种方法非常好,同在UCOSII.h这个头文件中定义全局数据结构来使系统其他内核文件共享这些数据结构,处理方式很巧妙。具体做法是:在头文件开头
#ifdef OS_GLOBALS
#define OS_EXT
#else
#define OS_EXT extern
#endif
定义变量时OS_EXT OS_TCB *OSTCBCur;
而在邮箱、信号量啥源文件开头都有这样一段代码
#ifndef OS_MASTER_FILE
#include
#endif
唯独在Core.c文件中
#ifndef OS_MASTER_FILE
#define OS_GLOBALS
#include
#endif 
这么一来只有在编译Core.c文件时头文件中的数据结构编译成定义的形式,其他源文件编译成声明的形式,以后可以借鉴。
7、当头文件比较多时,每个源文件模块一个一个添加头文件方法不合理,应该定义一个头文件Config.h,然后把所有的头文件都放到这个
文件中,主要不要加防重复包含处理,只是把所有的头文件包含进去。对于便于管理可以在工程目录新建一个文件夹专门存头文件,这样的话头文件要写成
#include"..\USER\Task.h",表示首先退出当前一级文件目录,然后进入USER文件夹然后找到Task.h头文件,所有的源文件、头文件中都加上 #include“Config.h”就行了,非常方便。
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Arduino可视化编程是指使用图形化界面编程工具来开发Arduino项目。传统的Arduino编程使用C/C++语言,需要熟悉语法和编写代码,对初学者来说有一定的难度。而可视化编程则是将各种功能模块以图形进行拖拽组合,通过连接线连接起来,以此来完成程序的编写。 使用可视化编程工具,比如Arduino IDE中的Blockly,可以直接拖拽各种模块,如数字输入、输出、循环、判断等,通过简单的操作就可以完成代码的编写。无需编写繁琐的语法,可视化编程编程更加直观、易于理解。初学者可以通过拖拽组合模块,快速上手编程,降低了学习门槛。 除了Blockly,还有其他可视化编程工具,如mBlock、Scratch等,它们都支持Arduino平台。这些工具不仅提供了丰富的模块库,还能直接与Arduino开发板进行连接,实时地将程序下载到开发板上运行。 可视化编程不仅适用于初学者,对于有一定编程基础的开发者来说,也可以以更高效的方式进行开发。通过可视化编程工具,可以快速搭建原型,进行功能验证和调试,缩短开发时间。 总结来说,Arduino可视化编程以图形化界面代替传统的编程语言,降低了编程难度,使得初学者能够更轻松地开始Arduino项目。它不仅提供了丰富的模块库,还能实时地将程序下载到开发板上运行。对于有经验的开发者来说,可视化编程工具也可以提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值