指针数组里的每个存储区是一个指针类型
的存储区
字符指针数组里包含多个字符类型指针,其中
每个指针可以表示一个字符串
字符指针数组可以用来表示多个相关字符串 主函数的第二个参数是一个字符指针数组,
其中每个指针代表一个字符串,所有
这些字符串的内容都来自于用户的命令
主函数的第一个参数是一个整数,它表示
第二个参数里的指针个数 #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. HDU 4363

    这题是记忆化搜索很容易想到,但状态却不好设 dp[i][j][u][d][l][r][k].对于矩形为i*j,它的四周的颜色分别为u,d,l,r,横竖切的状态为k的种数. 其中要注意一个问题是,停止不 ...

  2. Effective C++ 45-48

    45.弄清c++在幕后为你所写.所调用的函数. 假设设置一个空类,c++编译器会声明下面函数:拷贝构造函数.赋值运算符,析构函数,一对取地址运算符函数(const和非const).而假设你没有声明不论 ...

  3. Mahout算法调用展示平台2.1

    软件版本号: windows7: Tomcat7.JDK7.Spring4.0.2.Struts2.3.Hibernate4.3.myeclipse10.0.easyui:Linux(centos6. ...

  4. 【BASH】bash shell的使用实例

    ************************************************************************ ****原文:blog.csdn.net/clark_ ...

  5. Hypercall

    在Linux中.大家应该对syscall很的了解和熟悉,其是用户态进入内核态的一种途径或者说是一种方式.完毕了两个模式之间的切换:而在虚拟环境中,有没有一种类似于syscall这样的方式.可以从no ...

  6. &lt;LeetCode OJ&gt; 226. Invert Binary Tree

    226. Invert Binary Tree Total Accepted: 57653 Total Submissions: 136144 Difficulty: Easy Invert a bi ...

  7. 在MTK平台里,,函数kal_prompt_trace起什么作用???Kal_prompt_trace的参数有表示什么?

    在MTK平台里,,函数kal_prompt_trace起什么作用???Kal_prompt_trace的参数有表示什么?一直弄不明白,但是很多函数的开头就是这个函数,,而且一般有三个参数-- kal_ ...

  8. 两个向量之间的欧式距离及radial-basis-functions(RBF)

    template <class DataType1, class DataType2>double EuclideanDistance(std::vector<DataType1&g ...

  9. Spring Boot (14) 数据源配置原理

    数据源配置源码 这里截取org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration的部分源码,主要介绍Tomcat和Hika ...

  10. Hibernate多表映射(三)

    一对多|多对一 一个分类对应多个商品,一个商品只属于一个分类 创建分类表 products用set装,set特点值不能够重复 package com.hibernate.domain; import ...