#pragma是一种预处理指令,它的作用是设置编译器的状态或者指定编译器完成一些特定的动作。其格式一般为 #pragama parameter。
#pragma message:message参数用于在编译信息输出窗口输出相应的信息,用于源代码的信息控制。其格式为#pragma message("SDK 1.01")。
#pragma once:一般用于头文件中,用来保证头文件只被编译一次。
#pragma code_seg:用来设置程序中函数代码存放的代码段。
#pragma pack:用来控制内存对齐的方式。#pragma pack(n)编译器将按照n个字节进行对齐。`#pragma pack()`编译器将取消自定义字节对齐方式。
分段错误(Segmentation fault)是一种运行时错误,在程序运行时可能由于某些原因而发生。
以下是 C 中的分段错误错误的一些常见原因列表:
解引用指针的用法:如果使用的指针可能没有有效的地址/内存位置来指向,它可能会产生分段错误错误。
如果尝试访问只读内存区域,程序可能会返回分段错误错误。
当尝试释放已释放的内存(使用指针)时,也可能发生分段错误错误。
分段错误错误的发生是C中产生堆栈溢出错误的原因。
#define NTBL (sizeof(table)/sizeof(table[0]))
①const Stock & Stock::topval (②const Stock & s) ③const
①处const:确保返回的Stock对象在以后的使用中不能被修改
②处const:确保此方法不修改传递的参数 S
③处const:保证此方法不修改调用它的对象,const对象只能调用const成员函数,不能调用非const函数
在嵌入式 C 中,ISR 代表中断服务程序。 这些是存储在特定内存地址并在发生某种类型的中断时调用的过程。
在C/C++中,为了避免了同一个头文件被包含(include)多次有两种宏实现方式:
第一种是#ifdef的方式,这种方式受C/C++语言标准支持,它可以保证同一个文件或者**内容完全相同的文件/代码片段**被包含多次。但这种定义方式依赖于宏名字不能冲突,如果宏名冲突,会导致头文件存在缺报错找不到声明。
#define MIN(A,B) ((A) <= (B) ? (A) : (B))
1) 标识#define在宏中应用的基本知识。这是很重要的。因为在 嵌入(inline)操作符 变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
2) 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优的代码,了解这个用法是很重要的。
3) 懂得在宏中小心地把参数用括号括起来。
前一个循环一遍再判断,后一个判断以后再循环。
1、总是使用不经常改动的大型代码体。
2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。
预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。
上一篇:【leetcode】跳跃游戏
下一篇:基于 oss 框架的音频驱动