最全面的关于C语言的重定义常量的叙述

前言

接手别人的项目,在项目中老是会出现说是重复定义的警告。这类的博客较少,我只好多方查找参考资料。今天出一个完整的报告共和我有同样问题的同事做以参考。

概念:

假设先把LIMIT定义为21,后来在该文件中又定义为26。这一过程被称之为重定义常量

编程时,头文件中引用头文件,定义全局变量,一定要慎重考虑

不同的实现方式采用不同的重定义方案。除非新旧定义相同,否则这些定义会被编译器认定是错误。还有一些实现方式允许重定义,但会给出警告。
ANSI标准采用第一种结局方案,只有新定义和旧定义完全相同才被允许重定义。
例:
具有相同的定义意味着替换体中的记号必须相同,且顺序相同。

#define SIX 2 * 3
#define SIX 2 * 3

这两条定义都有相同三个记号,额外的空格不算替换体的一部分。

#define SIX 2*3

这条定义只用一个记号,与前两个不同。如果需要重新定义,就需要使用 #undef 指令

若确实需要重定义常量,则使用 const 关键字和作用域规则更容易一些

#undef指令详解

#include<stdio.h>

int main()
{
#define TWO 2
    printf("%d\n",TWO);
#undef TWO
    printf("%d\n",TWO*TWO);
    return 0;
}

printf("%d\n",TWO*TWO);这行语句报错
#undef起的作用:
当用完一个宏,不希望下面的代码再用到这个宏,那么就可以#undef它

常用于:

#define MAX 20
#include "myself.h"
#undef  MAX

**只有myself.h中的函数可以使用宏

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值