侧边栏壁纸
博主头像
千异博主等级

学无止境,学以致用,志存高远!

  • 累计撰写 27 篇文章
  • 累计创建 21 个标签
  • 累计收到 0 条评论

C语言宏定义以及条件编译

千异
2022-05-04 / 0 评论 / 2 点赞 / 237 阅读 / 1,056 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-04,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

宏定义

格式:

#define 标识符 字符串

在编译预处理时对所有出现的宏名,用宏定义中的字符串去代换,也称为宏代换或宏展开。对于双引号括起来的字符,是不会进行替换的。

标识符为定义的宏名,字符串可以是常数,表达式,格式串等。

#include <stdio.h>

#define PI 3.1415926535
#define L(r) 2*PI*r//带变量的宏
typedef double DOUBLE;//给double取个别名

int main() {
    DOUBLE c = L(3);
    printf("%lf", c);
}

条件编译

格式:(条件是常量表达式,不能是变量)

#if 条件1
	code
#elif 条件2
	code
#else
	code
#endif

示例:

#include <stdio.h>

int main() {
#define SCORE 67

#if SCORE > 90
    printf("优秀");
#elif SCORE > 60
    printf("良好");
#else
    printf("不及格");
#endif
}

typedef关键字

给某个类型取个别名。
格式:

typedef 原类型名 新类型名;

这里的原类型名可以是基本数据类型,也可以是某个类型的别名,甚至是数组,指针,结构类型。
示例:

#include <stdio.h>

int main() {
    typedef struct {
        int age;
        char *name;
    } PersonType;
    PersonType p;
    p.age=18;
    p.name = "suixin";
    printf("%d,%s", p.age, p.name);
}

const关键字

const修饰变量,可以让变量的值不能改变。
作用:

  • 可以定义常量。
  • 便于进行类型检查,使得编译器对处理内容有更多了解,消除了一些隐患。
  • 保护被修饰的东西,防止意外修改,增强程序的健壮性。
  • 节省内存空间,避免不必要的内存分配。
  • 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,使得它成为一个编译期间的常量,没有了存储与读内存的操作,提高了效率。

可以用在类型说明符前面,也可以在后面。可以修饰简单类型,数组类型。

修饰函数的形参,则局部变量在函数内部不可改变。修饰函数的返回值,则返回值不可改变,修饰指针变量,const在左侧,表示值不能改变,指向可以改变。const在右侧,表示指向不能改,但是值可以改变。两侧都有,则都不能改。

2
博主关闭了所有页面的评论