自用c语言跨平台混合编程指南

文章目录

  • 正文
    • 1.编程规范
      • 1-1 尽可能使用指针,高效
      • 1-2 指针在哪里创建,就在哪里释放
      • 1-3 时刻关注内存消耗
      • 1-4 与c++混编时,要使用对应的创建和释放方法
      • 1-5 底层设计尽可能简单
      • 1-6 传入参数带上const
      • 1-7 跨平台语言尽可能少用try catch
      • 1-8 跨平台弱类型语言应明确类型

正文

1.编程规范

1-1 尽可能使用指针,高效

ps:指针在很多地方很有用:
比如跨平台编程,很多数据结构跨平台后不一样了,这时候如果转换的话会增加不必要的操作
还有效率问题,保存指针远比其他高效的多

1-2 指针在哪里创建,就在哪里释放

ps:处于安全问题考虑,在外部创建的指针,动态申请内存,如果在内部释放掉了,其他地方引用的概率很大,将可能导致段错误。跨平台编程的时候无法定位到问题。

1-3 时刻关注内存消耗

ps:使用指针动态申请的内存,如果没有被合理释放,将会导致不可见的内存泄漏

1-4 与c++混编时,要使用对应的创建和释放方法

1)c++动态申请内存,使用new ,对应释放使用delete
2)c里面使用malloc动态申请内存,释放使用free
3)有些库封装了自己的释放方法,一定要合理调用,否则通过free,delete无法及时释放内存空间。(比如opencv的Mat,有自己的release方法)

1-5 底层设计尽可能简单

ps:比如opencv,参数错了,使用assert直接终止了。
错误处理逻辑应交由上层逻辑,保证程序易用性。

1-6 传入参数带上const

ps:这样声明的函数简单易懂

1-7 跨平台语言尽可能少用try catch

ps:try catch仅用于少数语句,用于捕获已知异常。其他异常应当定位出来,并处理掉。

1-8 跨平台弱类型语言应明确类型

ps:js和python等弱类型语言,命名规则举例:
方法名: OneMethod_void
变量名: oneParam_int
方法名后面带返回类型,首字母大写
变量名后面带变量类型,首字母小写
好处是,弱类型变量经常被自己覆盖掉,无意识的状况下会传错类型,导致调试bug调半天。

你可能感兴趣的:(c)