1、C工程的组成
c程序是由一个或者多个.c文件和.h文件组成的。
其中 .c文件是c源代码文件,是程序具体实现的部分。.h文件时C的头文件,用来声明.c文件中函数的。也可以申明自定义的数据。如下图,我定义了一个宏:#define kAD_MAX_DIM 5。这样包括这样头文件的c程序里面kAD_MAX_DIM的值都是等于5的。图二是我定义的函数:
void conv2d3(kad_node_t_i* input,kad_node_t* w, kad_node_t* output,int kernel_DSP,int taskid);
在这个文件中我申明了函数名:conv2d3。函数的返回数据的类型,我这里返回的是void,表示没有数据返回,可以返回的数据类型可以是:int char float double等,你也可以是自定义数据如我图一定义了数据"dfloat",
其申明格式为:dfloat 函数名(参数数据类型 参数名;……);
图一
图二
2 .c源代码文件组成
(1)预处理命令。以“#”开头
a: #include
文件包含命令 如 #include(这是C语言中常用的头文件&#xff0c;标准输入输出头文件)&#xff0c;又如#include ”conv.h”;这也是文件包含命令。#include<.h>这个是检索头文件是去系统标准的头文件路径所在的文件目录下找(如&#xff1a;/include &#xff0c; /usr/include,,)&#xff0c;而#include“.h文件名”是在先在工程当前路径下搜索&#xff0c;然后再到标准路径下去找&#xff0c;比如&#xff0c;我这个包含#include ”conv.h”的.c文件所在的目录下&#xff0c;有一个conv.h文件&#xff0c;这系统就会将该文件里面的内容加载到.c文件里面去。如果没有一个conv.h文件&#xff0c;则会去系统标准的头文件路径所在的文件目录下找&#xff0c;找到了就会加载&#xff0c;没找到&#xff0c;编译器就会报错。
b: 宏定义
#define PI 3.14 //不带参数的宏
#define MAX(a,b) a > b &#xff1f; a &#xff1a; b //带参数的宏
宏仅作"替换"作用
比如定义了这样的宏&#xff0c;#define MAX(a,b) a > b ? a : b &#xff0c;你在程序中使用MAX(3&#43;5,6&#43;8)时&#xff0c;编译器就会帮你把它替换为&#xff1a;m&#61; 3&#43;5 > 6&#43;8? 3&#43;5 &#xff1a;6 &#43;8&#xff1b;这是替你简便代码的方案&#xff0c;也是对你写代码的方便&#xff0c;比如程序中很多用到了这个宏&#xff1a;#define PI 3.14&#xff0c;这样你只需要在定义宏的那里修改就会&#xff0c;而不会去程序使用的每个地方去修改。
#define DEBUG //仅定义一个符号DEBUG
c&#xff1a;条件编译
#if DEBUG
#endif
#if defined(DEBUG)
#else
#endif
这个大家可以尝试尝试&#xff0c;这里不多解释&#xff0c;因为看代码就很明显了。
3&#xff1a;全局声明
"声明" &#xff1a;C语言中声明就是把一个名字(C标识符)与某个C语言对象相关联(对象&#xff1a;可以是变量&#xff0c;函数&#xff0c;或类型)。
变量声明 如int a;这样我就定义了一个整形数据&#xff0c;名字叫a
函数声明 如 int add(int a,int b);这样我就定义了一个函数&#xff0c;名字叫 add&#xff0c;他的返回值是int 型&#xff0c;即整形数据&#xff0c;他有两个参数需要传入&#xff0c;准确说两个整形参数传入。
类型声明 定义一种新的数据类型。上面图有&#xff0c;dfloat。
全局什么和局部申明&#xff0c;开始这样理解吧。c程序中有{}这个大括号&#xff0c;如下图&#xff0c;这样的申明&#xff0c;申明的作用空间为申明到函数后半部分&#xff0c;即“}”之前&#xff0c;如果申明没在“{ }”之间&#xff0c;这可以理解为本文件的全局变量。可以网上检索下全局变量和局部变量。
4&#xff1a;函数&#xff0c;function,功能。
C语言的函数就是一个功能模块&#xff0c;是指令序列的集合。
一个程序(可以由多个文件组成)可以有多个函数&#xff0c;
但有且仅有一个main函数&#xff0c; main由执行这个程序的操作系统
来调用&#xff0c;那么main函数执行完了&#xff0c;你的程序就执行完了。
函数首部(函数的名字&#xff0c;函数的返回类型&#xff0c;输入参数)
函数体: 函数功能的具体实现
声明部分(局部声明&#xff1a;变量声明&#xff0c;函数声明&#xff0c;类型声明)
语句部分("语句"&#xff1a;C语言指令)
例子&#xff1a;
5&#xff1a;C语句(C指令)
(1)控制语句&#xff1a;完成一定的控制功能
如&#xff1a;if/else、for/while/do while、continue、break、switch、goto、return
(2) 函数调用语句
如&#xff1a;sum_x(3,4);
(3)表达式语句
由一个表达式加一个分号构成一个表达式语句&#xff1a;a &#61; 5;
(4) 空语句: 只有一个分号的语句
如&#xff1a;;
(5)复合语句&#xff1a;用一对{}括起来的语句
6&#xff1a;.h文件的组成
C语言头文件是一个接口文件&#xff0c;该文件的内容一般相应的C文件要导出的接口部分的内容(函数的声明&#xff1b;类型的声明&#xff1b;全局变量的声明)
如&#xff1a;
7&#xff1a;.C程序设计结构
(1)顺序结构
(2)选择结构(分支结构)
(3)循环结构
举报/反馈