指针数组里的每个存储区是一个指针类型
的存储区
字符指针数组里包含多个字符类型指针,其中
每个指针可以表示一个字符串
字符指针数组可以用来表示多个相关字符串 主函数的第二个参数是一个字符指针数组,
其中每个指针代表一个字符串,所有
这些字符串的内容都来自于用户的命令
主函数的第一个参数是一个整数,它表示
第二个参数里的指针个数 #define预处理指令可以用来定义宏 宏可以用来给数字起名字
定义宏的时候要把宏名称写在#define预处理
指令后,宏名称后写它所代表的数字
宏名称通常由大写英文字母构成
宏名称里不可以包含空格
用宏给数字起名字的时候不可以使用赋值
操作符
可以在程序里使用宏名称代表它所对应的数字,
编译器会把程序里的所有宏名称替换成
它所代表的数字 可以在编译命令里使用-D选项临时指定
宏所代表的数字 宏还可以给一个计算公式起名字
计算公式里包含未知数字,宏的参数用来
表示这些未知数字 编译器采用二次替换的方式处理带参数的宏 宏的参数不一定代表数字,所以它没有类型
如果宏有多个参数就需要用逗号把他们分开 宏不可以使用自己的存储区和函数进行数据
传递
宏没有形式参数也没有用来存放返回值的
存储区 能当作数字使用的宏必须编写成一个表达式
(因为宏没有用来记录返回值的存储区) 宏的参数直接代表函数的存储区,在宏里对
参数内容的修改可以直接影响函数 因为宏没有用来记录返回值的存储区,所以
不能保证优先计算宏里面的操作符
所有能当作数字使用的宏必须写在一对小括号
里面 宏没有形式参数所以不能保证优先计算参数
里面的操作符
编写宏的时候所有能当做数字使用的参数也都
必须写在小括号里面 不要把自增或自减的结果作为宏的参数使用 编写宏的时候可以使用一些特殊的符号,它们
叫做宏操作符 #是一个宏操作符,它可以把宏的参数转换
成字符串字面值
##也是一个宏操作符,它可以把一个代表
标识符的参数和其他内容连接得到
一个新的标识符 条件编译可以在编译的时候从几组语句里
选择一组编译而忽略其他组
#ifdef/#ifndef...#else...#endif
以上结构可以根据一个宏名称是否被定义过
从两组语句中选择一组编译
最开始的预处理指令应该从两个里选择一个,
它们的后面都要跟着一个宏名称
如果选择#ifdef就表示它后面的宏名称被定义
过就编译前一组语句,否则编译后一组
语句
如果选择#ifndef就刚好相反 #if...#elif(任意多次)...#else...#endif
这个结构也可以实现条件编译,它可以根据
任意逻辑表达式从多组语句中选择一组
编译

宏、预编译(day12)的更多相关文章

  1. C中的预编译宏定义

     可以用宏判断是否为ARC环境 #if _has_feature(objc_arc) #else //MRC #endif C中的预编译宏定义 -- 作者: infobillows 来源:网络 在将一 ...

  2. C++头文件中预编译宏的目的

    C++头文件中预编译宏的目的 eg: #ifndef _FACTORY_H_#define _FACTORY_H_......#endif //~_FACTORY_H_ 防止头文件被重复包含,导致变量 ...

  3. Visual Studio 2013 配置多个Release版本,并为每个版本配置预编译的宏

    最近开发过程中,需要将同一份工程编译成两个版本,分别为ReleaseA和ReleaseB. ReleaseB比ReleaseA少了部分功能,所以希望在编译的时候,根据不同的版本编译工程中相应的代码. ...

  4. C++ 内置宏定义 与 预编译指令

    内置宏和预编译指令, 在代码调试.单元测试.跨平台代码中经常会用到.这里记录一下. 1. 内置宏 (文件名,当前行号,当前日期,当前时间,当前执行方法名) __FILE____LINE____DATE ...

  5. linux, windows, mac, ios等平台GCC预编译宏判断

    写跨平台c/c++程序的时候,需要搞清各平台下面的预编译宏,区分各平台代码.而跨平台c/c++编程,GCC基本在各平台都可以使用.整理了一份各平台预编译宏的判断示例. 需要注意几点: * window ...

  6. GCC预编译宏查看

    编译调试代码时,总是遇到要使用编译器预编译宏进行跨平台编译. gcc -E -dM -</dev/null 编译器版本 Thread model: posix gcc version 5.4.0 ...

  7. ObjC宏定义-预编译小功能

    以前看来#号,好像只是预编译,原来它还可以有跟Swift中"\( )"的拼接功能 例如: #define string(x) #x 意思就是 string(x) = "x ...

  8. C语言的傻瓜式随笔(二):全局变量、预编译、goto

    函数的作用:可以实现代码的重用. 函数只需要定义1次,那么函数中的代码就可以随意的调用.       -某不知出处的基本概念 学而时习之,如有误笔,请指正 一.goto跳转语句 goto在C语言的作用 ...

  9. C#预编译

    在C#开发中经常会遇到在Debug和Release模式下需要执行不同代码的情况,这个时候使用C#条件编译可以很好地解决这个问题,如 #if DEBUG // TO Do Debug Mode Code ...

  10. iOS中的预编译指令的初步探究

    目录 文件包含 #include #include_next #import 宏定义 #define #undef 条件编译 #if #else #endif #if define #ifdef #i ...

随机推荐

  1. apache禁止訪问某些文件或文件夹的方法

    [apache配置禁止訪问] 1. 禁止訪问某些文件/文件夹 添加Files选项来控制,比方要不同意訪问 .inc 扩展名的文件,保护php类库: <Files ~ "\.inc$&q ...

  2. luogu1273 有限电视网

    题目大意 有一棵有根树,每个结点有一个收益,每条边有一个花费.如果要选择一个叶子结点,则根节点到该叶子结点的路径上的所有结点都必须被选择.求当总收益大于等于总花费的情况下,最多能选择多少个叶子结点. ...

  3. 怎样动态设置GridView的宽和高(Android)

    LinearLayout.LayoutParams linearParams2 = (LinearLayout.LayoutParams)liveGrid.getLayoutParams(); lin ...

  4. WebSocket在Asp.Net中的例子

    环境 以下代码环境要求:win8或win10, .net4.5+IIS8 部署到IIS8上面 转到 Windows程序和功能 -打开Windows功能里面 IIS选项启动4.5 和WebSocket支 ...

  5. .NET页面事件执行顺序

    摘自:http://www.cnblogs.com/kenkofox/archive/2011/03/18/1987998.html和http://blog.csdn.net/yiruoyun/art ...

  6. PCB 全景图技术实现

    为了对3D模型理解更透,这里采用threejs(WebGL第三方库)实现,刚开始学习入门,为了能看明白基本上每行代码都注释. 如果仅仅是为了实现全景图,可以用photo-sphere-viewer.j ...

  7. 安装robotframework-ride

    先安装好python并配置好环境变量 1.Windows+r后输入CMD 安装robotframework框架 2.输入pip install robotframework 安装RIDE前需要安装的依 ...

  8. SpringBoot + MyBatis(注解版),常用的SQL方法

    一.新建项目及配置 1.1 新建一个SpringBoot项目,并在pom.xml下加入以下代码 <dependency> <groupId>org.mybatis.spring ...

  9. ROS-TF-新建坐标系

    前言:在前面的试验中,我们分别有wolrd,turtle1和turtle2三个坐标系,并且world是turtle1和turtle2的父坐标系.现在我们来新建一个自定义坐标系,让turtle2跟着新的 ...

  10. Java 中静态变量和实例变量区别

    Java 中静态变量和实例变量区别 静态变量属于类,该类不生产对象,通过类名就可以调用静态变量. 实例变量属于该类的对象,必须产生该类对象,才能调用实例变量. 在程序运行时的区别: 实例变量属于某个对 ...