//#import 与 #include 相比能够防止重复导入,保证内容值只复制一个.
//#include "A.h"
//#include "A.h"
//多个include 修改如下:
#ifndef lessonPointHigher_A_h
#define lessonPointHigher_A_h
int max(int x ,int y)
{
return x > y ? x :y;
}
#endif
//宏 ,只做替换 //#开头 指令
//命名规则: 1. 全大写 2. k + 驼峰(多个单词组成,每个单词的首字母大写.)
//例如 MAX 或者 kMax
//宏 不是变量
//#define 用来定义宏 COUNT 宏名
//无参宏
#define COUNT 10 //后面不要加分号
//在预编译阶段 COUNT 全部换成 10
//使用宏 应注意的问题:
//1.定义宏时,最后不能加分号.分号也会成替换内容的一部分
//2.参数要加括号
//3.对于有参数宏,宏名与括号之间不能加空格
//有参宏
#define SUM(A,B) ((A) + (B))
//如果先算宏内的运算 定义宏时,加括号 #define SUM(A,B) ((A) + (B))
//宏不限制数据类型
//宏 只是替换功能
//SUM(5,10) * SUM(5, 10) 等于 65
#define AAAA
int main(int argc, const char * argv[])
{
//条件编译 根据条件来编译不同的代码 ,编译期会将源文件编译成二进制指令,存放在代码区.条件编译经常用来调试程序.
//条件编译 第一种形式
//#ifdef 标识符 代码段1 #else 代码段2 #endif
//如果标识符通过#define 定义过,则编译代码段1 , 否则编译代码段2 . #endif 是编译的结束标志.
#ifdef AAAA
int a =10 ;
#else
int a= 20;
#endif
printf("a = %d\n", a);
//条件编译 第二种形式
//#ifndef 标识符 代码段1 #else 代码段2 #endif
//如果标识符没有通过#define 定义过,则编译代码段1 , 否则编译代码段2 . #endif 是编译的结束标志.
#ifndef AAAA
int b =10 ;
#else
int b= 20;
#endif
printf("b = %d\n", b);
//条件编译 第二种形式
//#if 常量表达式 代码段1 #else 代码段2 #endif
//如果 常量表达式 结果非 0 编译器编译代码段1 否则编译代码段2
#if 1
int c = 10;
#else
int c= 20 ;
#endif
//结构体指针访问结构体成员,通过指向操作符, 例如:结构体指针变量->结构体成员;
// printf("%s \n" ,pStu->name);
// strcpy(pStu->name, "xiaoguang");
// printf("%s \n" ,pStu->name);
// // pStu ++ ; //增加的是整个结构体的大小.
// // *pStu 和 xiaoguang 的功能是一样的.都是获取到结构体的内容.