当前位置: 首页 > news >正文

中国营销型网站刷钻业务推广网站

中国营销型网站,刷钻业务推广网站,房山网站建设怎么样,wordpress回复查看今天要讲的内容是关于C语言的预处理。搞清楚了这个,就可以分析UDF中的各种头文件源代码,从此写UDF不求人。 1 关于预处理 在UDF的各种头文件中(文件路径D:\Program Files\ANSYS Inc\v180\fluent\fluent18.0.0\src),存在各种以#开头的语句&…

今天要讲的内容是关于C语言的预处理。搞清楚了这个,就可以分析UDF中的各种头文件源代码,从此写UDF不求人。

1 关于预处理

在UDF的各种头文件中(文件路径D:\Program Files\ANSYS Inc\v180\fluent\fluent18.0.0\src),存在各种以#开头的语句,如下图中所示。
UDF头文件
这些以#开头的语句就是C语言的预处理命令。
C语言的预处理工作由一个预处理程序来完成,任何C系统都有一个预处理程序,其负责处理源程序中的所有预处理命令,从而生成不含预处理命令的源程序。C语言的预处理目的是为了方便编程。

预处理命令以独立的预处理命令行的形式出现在源程序中,# 是其特殊的引导符号。如果源程序中某一行的第一个非空格符号是 # ,这就是一个预处理命令行。预处理命令的作用是要求预处理程序完成一些操作。

2 文件包含命令

文件包含命令是以#include开始的行,其作用是把特定文件的内容复制到当前源文件中。其存在两种形式:

# include <文件名>
# include "文件名"

两者的差异在于文件搜索方式的不同。
第一种形式,预处理程序直接到系统指定的某些目录中去查找所需文件,目录指定方式由具体系统确定,通常指定几个系统目录。
第二种形式,预处理程序现在源文件所在目录中查找,若没找到文件则再到系统指定的目录中去查找。
文件包含命令的处理过程:首先查找所需文件,找到后就用该文件的内容取代这个包含命令行。替换进来的文件中若有预处理命令,也将被处理。

3 宏定义和宏替换

#define开始的行称为宏定义命令行。宏定义包含两种形式:

  • 简单宏定义
  • 带参数宏定义

3.1 简单宏定义

简单宏定义的形式为:
#define 宏名字 替代文本
其中宏名字是任意标识符,替代文本可以是任意一段正文,其中可以包括程序中能出现的任何字符(包括空格等),一直延续到本行结束。如果需要写多行的替代文本,可以在行末写一个反斜杠\,这将使下一行内容继续被当做替代文本。
宏定义的作用就是为宏名字定义替代
如果一个宏名字的替代文本是数值或可以静态求值的表达式,当这个宏名字在程序某处出现,就相当于在那里写了这个数值或表达式。
例如,如果进行了如下定义:

#define SLD static long double

伺候,宏名字SLD就代表static long double。若程序中出现:

SLD x=2.4, y=9.16;

经过预处理后,源代码被翻译为:

static long double x=2.4,y=9.16;

预处理并不检查宏定义中的替代文本是否为合法的C语言结构,也不检查替换之后的结果是否为正确的C语言程序段,其只是简单地完成文本替换工作。

3.2 带参数的宏定义

带参数的宏定义形式为:
#define 宏名字(参数列表) 替代正文
使用带参宏时,不但要给出宏的名字,还要用类似函数实参的形式给出各宏参数的替代段,多个替代段之间用逗号分隔。这种形式也成为一个宏调用。
对宏调用的替换分两部分进行:首先用实际替代段去替换宏定义的替代正文里出现的各个宏参数,然后把替换的结果(展开后的替代正文)代入程序里出现宏调用的为准,新年广场宏替换的最后结果。

例如,定义求两个数据中较小数,可定义宏:

#define min(A,B) ((A)<(B)?(A):(B))

若程序中出现如下语句:

z = min(x+y,x*y)

则宏展开后则为:

z = ((x+y)<(x*y)?(x+y):(x*y));

带参数的宏定义与函数看起来很类似,但实际上有很大的不同。切记宏定义只是简单的文本替换。

4 条件编译命令

条件编译的作用是在源程序中划出一些片段,使预处理程序可根据条件保留或丢掉一段,或从几段中选择一段保留。实现条件编译的预处理命令有四个,分别是:

#if
#else
#elif
#endif

其中,#if#elif命令以一个能静态求出整型值的表达式为参数。另外两个没有参数。条件编译命令的常见使用形式有三种:

  • 形式一
#if 整形表达式
…… /*代码片段,条件成立时保留*/
#endif
  • 形式二
#if 整形表达式
…… /*条件成立时保留*/
#else
…… /*条件不成立时保留*/
#endif
  • 形式三
#if 整形表达式
…… /*条件成立时保留*/
#elif 整形表达式
…… /*elif部分,可以有多个*/
#elif 整形表达式
……
#else
…… /*条件都不成立时保留*/
#endif

其中整形表达式是预处理条件,值为0表示条件不成立,否则条件成立。这里常用==,!=等做判断,例如判断宏定义的符号是不是等于某个值等。
为了方便,C语言提供了一个特殊谓词defined,其使用形式有两种:

define 标识符
define (标识符)

当标识符是有定义的宏名字时,define(标识符)将得到1,否则得到0。这种表达式常被作为条件编译的条件。此外还有两个预处理命令#ifdefifndef,他们相当于#if和#define混合的简写形式。

#ifdef 标识符 /*相当于#if define(标识符)*/
#ifndef 标识符 /*相当于#if !define(标识符)*/

更多CFD资料可微信扫描下方二维码关注微信公众号。

微信扫码关注公众号

http://www.lbrq.cn/news/2534563.html

相关文章:

  • b2b网站的功能产品策划方案怎么做
  • 爱网站黄害羞草品牌营销策划机构
  • 国外做内容网站南宁百度seo排名
  • 番禺人才市场档案中心谷歌外贸seo
  • 优质的做pc端网站百度联盟怎么加入赚钱
  • 手机网站建设沈阳百度平台推广
  • 优购物官方网站直播seo排名快速优化
  • 鸡西网站建设长沙靠谱关键词优化服务
  • 做设计到哪个网站赚钱口碑营销的名词解释
  • 织梦云建站系统在线seo工具
  • 网站cn域名注册百度爱采购优化排名软件
  • 如何查网站外链站长之家素材网站
  • 免费ppt自动生成器seo外链平台热狗
  • 深圳网站制作公司价位今日国内重大新闻事件
  • 手机版网站如何建设seo推广如何做
  • 网站答辩ppt怎么做免费关键词搜索工具
  • 做数学ppt工具的网站网上的推广公司
  • 做网站公司选择哪家好seo优化师
  • 重庆金建站sem是什么职业岗位
  • 重庆百度推广seo入门seo技术教程
  • 微信公众平台和微网站的区别免费网站收录入口
  • 复兴网站制作百度账号客服人工电话
  • 怎样给公司做免费网站西安seo关键字优化
  • 个性化网站有哪些企业策划书
  • 怎么下载自己做的网站俄罗斯搜索引擎yandex推广
  • 在线课堂手机网站模板百度网盘下载
  • 湛江住房和城乡建设部网站百度的人工客服
  • 沈阳鹊起网站建设谷歌浏览器下载手机版中文
  • 住建蓉e办官网济宁seo优化公司
  • 武汉做个网站多少钱qq群推广
  • ASP.NET Core中使用NLog和注解实现日志记录
  • React中的this绑定
  • 用Python绘制SM2国密算法椭圆曲线:一场数学与视觉的盛宴
  • Python Pandas.concat函数解析与实战教程
  • VUE -- 基础知识讲解(二)
  • 通达OA服务器无公网IP网络,如何通过内网穿透实现外网远程办公访问OA系统