一、C头文件究竟是什么你怎么看每个C/C程序通常分为两个文件。一个文件用于保存程序的声明declaration称为头文件。另一个文件用于保存程序的实现implementation称为定义definition文件。C/C程序的头文件以“.h”为后缀C程序的定义文件以“.c”为后缀C程序的定义文件通常以“.cpp”为后缀像linux等系统以“.cc”或“.cxx”为后缀。简而言之就是用于声明的文件。那作为.net的程序员我们我们会问这个问题C#中的头文件你怎么看c#中声明和定义在一个地方相当于把头文件放在执行文件中。 一般引用时只需要用using引入命名空间即可。对于我们.net程序员可以这么理解头文件是相当于命名空间的定义引入以后就相当于引入命名空间。我们.net中直接是引入命名空间的。二、C头文件到底是哪些内容你怎么看头文件由三部分内容组成1头文件开头处的版权和版本声明这部分有分结构具体如下①版权信息。②文件名称标识符摘要。③当前版本号作者/修改者完成日期。④版本历史信息。我们.net中有不有这类似的结构你怎么看啊有啊AssemblyInfo.cs不就是详细的记录这些信息吗。2预处理块。来瞧一瞧预处理块。作为.net程序员的我们你是不是对于预处理块闻所未闻。 他的意思非常的简单在编译之前进行的处理。C编译器中有一个预处理器我们.net中并没有一个单独的预处理的概念。他有分成了3个阶段2.文件包含3.条件编译。什么是宏定义1.不带参数的宏定义宏定义又称为宏代换、宏替换简称“宏”。格式#define 标识符 字符串其中的标识符就是所谓的符号常量也称为“宏名”。预处理预编译工作也叫做宏展开将宏名替换为字符串。 掌握宏概念的关键是“换”。一切以换为前提、做任何事情之前先要换准确理解之前就要“换”。对于不带参数的宏的说明如下1宏名一般用大写2使用宏可提高程序的通用性和易读性减少不一致性减少输入错误和便于修改。例如数组大小常用宏定义3预处理是在编译之前的处理而编译工作的任务之一就是语法检查预处理不做语法检查。4宏定义末尾不加分号5宏定义写在函数的花括号外边作用域为其后的程序通常在文件的最开头。 6可以用#undef命令终止宏定义的作用域 7宏定义可以嵌套8字符串 中永远不包含宏9宏定义不分配内存变量定义分配内存。2.带参数的宏除了一般的字符串替换还要做参数代换格式#define 宏名参数表 字符串带参数的宏的说明1实参如果是表达式容易出问题#define S(r) r*rareaS(ab);第一步换为arear*r;,第二步被换为areaab*ab;正确的宏定义是#define S(r) (r)*(r)2宏名和参数的括号间不能有空格 3宏替换只作替换不做计算不做表达式求解4函数调用在编译后程序运行时进行并且分配内存。宏替换在编译前进行不分配内存5宏的哑实结合不存在类型也没有类型转换。6函数只有一个返回值利用宏则可以设法得到多个值7宏展开使源程序变长函数调用不会8宏展开不占运行时间只占编译时间函数调用占运行时间分配内存、保留现场、值传递、返回值说了这么多C的宏定义我们.net是不是支持宏了答案是肯定的。 可以使用以上的define的关键字可以实现C的宏定义的过程一般是在类的头部的声明。二文件包含——一个文件包含另一个文件的内容格式#include 文件名 或#include 文件名编译时以包含处理以后的文件为编译单位被包含的文件是源文件的一部分。编译以后只得到一个目标文件.obj被包含的文件又被称为“标题文件”或“头部文件”、“头文件”并且常用.h作扩展名。修改头文件后所有包含该文件的文件都要重新编译头文件的内容除了函数原型和宏定义外还可以有结构体定义全局变量定义1一个#include命令指定一个头文件2文件1包含文件2文件2用到文件3则文件3的包含命令#include应放在文件1的头部第一行3包含可以嵌套4文件名称为标准方式系统到头文件目录查找文件文件名则先在当前目录查找而后到头文件目录查找5被包含文件中的静态全局变量不用在包含文件中声明。说道这里我们.net是不是也有文件包含的概念了怎么没有了你using 命名空间不就是最好的.net文件包含体现了。他编译以后也是.obj文件。三 条件编译—— 有些语句行希望在条件满足时才编译。格式1#ifdef 标识符 程序段1#else程序段2#endif或#ifdef程序段1 #endif当标识符已经定义时程序段1才参加编译。格式2#ifndef 标识符 格式3 #if 表达式1 程序段1 #else程序段2#endif当表达式1成立时编译程序段1当不成立时编译程序段2。使用条件编译可以使目标程序变小运行时间变短。预编译使问题或算法的解决方案增多有助于我们选择合适的解决方案。此外还有布局控制#progma这也是我们应用预处理的一个重要方面主要功能是为编译程序提供非常规的控制流信息.net中也有他的条件编译的无非也是一下的处理格式#if #elif #else #endif
阅读完成 · 觉得有帮助?