1、 #include<conio.h>
conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。
2、#include"Kalman_k.h"
#include<conio.h>
有的程序用<>,有的却用" ",那么二者到底什么区别呢,什么情况下使用呢?
<>和""表示编译器在搜索头文件时的顺序不同,<>表示从系统目录下开始搜索,然后再搜索PATH环境变量所列出的目录,不搜索当前目录;" "是表示从当前目录开始搜索,然后是系统目录和PATH环境变量所列出的目录。
所以,系统头文件一般用<>,用户自己定义的则可以使用" ",加快搜索速度。
3、
#开头的语句,是预编译指令。也就是说,这些语句,在编译之前,就对他们进行了处理。
有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代码都写进去,在初始化时配置,但在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用条件编译,通过预编译指令设置编译条件,在不同的需要时编译不同的代码。
4、#include<cstdio>(1)#if和#endif是配对的,叫做条件编译指令,如果满足#if后面的条件,就编译#if和#endif之间的程序段,否则不编译。
(2)#if, #elif, #else, #endif#if 条件 1
代码段 1
#elif 条件 2
代码段 2
...
#elif 条件 n
代码段 n
#else
代码段 n+1
#endif
#if 的一般含义是如果#if 后面的常量表达式为true,则编译它所控制的代码,如条件1成立时就代码段1,条件1不成立再 看条件2是否成立,如果条件2成立则编译代码段2,否则再依次类推判断其它条件,如果条件1至n 都不成立则会编译最后的代码段n+1。
7、srand()的作用是生成一个“种子”,然后你再用rand()取随机数的时候就用这个种子来经过计算得到一个数字。在种子相同的情况下rand()的结果是一样的,所以为了保证rand()的随机性,经常用当前的时间作为种子,这样就可以保证rand()每次的结果都是不同的。
srand((unsigned)time(NULL));这语句的含义就是以自1970年1月1日00:00:00以来,到调用函数的时刻所累积的秒数作为产生随机数算法的种子seed。
#define是用来定义宏的。不是定义非零值的。其定义的宏,会在编译的时候自动替换。
比如:
#define PI 3.1415926
以后的代码中凡是出现 PI 的地方,编译器直接给替换为3.1415926。
用#define 的时候,一定要注意:编译器是直接替换的。
比如:
#define add(a,b) a+b //把a + b这样的操作用函数表示。以后你就可以直接用add(a,b)来表示a和b的和了。
现在你要计算: e = d * (a + b);
如果你这样写:
e = d * add(a,b);
那就错了,因为编译器会将#define的add(a,b)替换为 a+b,结果就成了: e = d * a + b就错了。