C语言命名空间详解

C语言命名空间详解

C语言命名空间分析准则:

在同一命名空间、相同作用域中,任何名字须具有唯一性

每个结构和联合内部都有自己的命名空间(独立于其他空间)

结构标签、联合标签、枚举标签共用一个命名空间(独立于其他空间)

goto使用的标签名,只要在同一函数内部唯一(独立于其他空间)

所有其他情况共用一个命名空间,如变量、所有枚举常量、typedef定义的别名等(独立于其他空间)

#define宏有点特殊,宏覆盖所有命名空间,所有和宏同名的在预处理时都会被替换为宏,只要替换后没有语法错误,这种替换就在神不知鬼不觉中进行。

一个能够完整说明问题的例子

#include

#include

//可以开关这个宏定义

//并用gcc -E main.c -o main.i来看宏的效果

//#define msg haha

struct msg//【结构标签命名空间】

{

int msg;//【结构内部的命名空间】,只需在结构内部唯一即可

};

union u_msg//【联合标签命名空间】和结构、枚举标签共用一个命名空间,故这里//不能再用msg或e_msg

{

int msg;//联合内部的命名空间,只需在联合内部唯一即可

};

//【其他命名空间】

int msg;//这里可以用msg,只要【其他命名空间】中唯一即可

typedef unsigned int uint;

enum e_msg//【枚举标签命名空间】和结构、联合标签共用一个命名空间,故这里//不能再用msg或u_msg

c语言中常用命名空间,C语言命名空间详解.doc相关推荐

  1. go语言字符串换行_Go语言中的字符串处理方法示例详解

    1 概述 字符串,string,一串固定长度的字符连接起来的字符集合.Go语言的字符串是使用UTF-8编码的.UTF-8是Unicode的实现方式之一. Go语言原生支持字符串.使用双引号(" ...

  2. HTML语言中常用的脚本语言有,脚本语言有哪些?

    脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译. 脚本语言是为了缩短传统的编写-编译-链接-运行(edi ...

  3. C语言中-条件编译#ifdef的妙用详解_透彻

    本文主要介绍c语言中条件编译相关的预编译指令,包括  #define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. #define     ...

  4. [转载] Java 语言中的实例初始化块 ( IIB) 详解

    参考链接: Java中的实例初始化块(IIB) 在 Java 语言中的类初始化块 文章中我们简单的介绍了下 Java 中的实例初始化块 ( IIB ).不过我觉得介绍的有点简单了,于是,再写一篇文章详 ...

  5. java里的初始化块_[转载] Java 语言中的实例初始化块 ( IIB) 详解

    参考链接: Java中的实例初始化块(IIB) 在 Java 语言中的类初始化块 文章中我们简单的介绍了下 Java 中的实例初始化块 ( IIB ).不过我觉得介绍的有点简单了,于是,再写一篇文章详 ...

  6. c语言中数组的概念及作用,详解C语言中的指针与数组的定义与使用

    指针的特点 他就是内存中的一个地址 指针本身运算 指针所指向的内容是可以操作的 操作系统是如何管理内存的 栈空间 4M~8m的大小 当进入函数的时候会进行压栈数据 堆空间 4g的大小 1g是操作系统 ...

  7. Java 语言中的实例初始化块 ( IIB) 详解

    在 Java 语言中的类初始化块 文章中我们简单的介绍了下 Java 中的实例初始化块 ( IIB ).不过我觉得介绍的有点简单了,于是,再写一篇文章详细介绍下吧. Java 语言中,存在三种操作:方 ...

  8. c语言中 伪指令,汇编语言六大基础伪指令详解

    六大伪指令(基础) 1.OFFSET 变量是数据的存放地,对变量最常见的操作是从变量中取出数据和把数据放人变量中. 实现这些操作有直接法和间接法两种方法. 以该寄存器加方括号的形式指明是用寄存器中的内 ...

  9. css修改代码,网站模板修改中常用到的CSS代码详解

    在上一篇文章中,提到了一些修改网站模板中常用到的方法,工具.但其中也牵涉到不到关于CSS样式表的一些知识,对于这些知识,缺乏的还占大多数,今天我就将常用的一些CSS样式表语法整理一下,发出来给大家,希 ...

  10. c语言中常用符号,C语言中常用的符号.doc

    1.按位与运算 ①概念 "按位与"运算符"&"是双目运算符,其功能是将参与运算两数的各对应二进位相与.只能对应的两个二进位均为1时,结果位才为1,否则为 ...

最新文章

  1. tomcat WARNING [ContainerBackgroundProcessor[StandardEngine[Catalina]]]
  2. 模拟信号可以传输声音和图像,那么文字呢--信息论系列
  3. Rust语言——无虚拟机、无垃圾收集器、无运行时、无空指针/野指针/内存越界/缓冲区溢出/段错误、无数据竞争...
  4. @Mybatis传多个参数
  5. codeforces 960A Check the string
  6. 静态连接库、动态链接库
  7. STL之stack,queue,优先队列
  8. QUIC学习笔记之 如何做到0RTT加密传输
  9. [转]caffe中solver.prototxt参数说明
  10. Gradle中的buildScript代码块
  11. 使用Redis+AOP优化权限管理功能
  12. 联想电脑Fn热键驱动
  13. mi5x的Android的版本,小米5XMIUI11最新稳定版刷机包(最新系统完整固件升级吧安卓8.0)...
  14. Java实现--身高预测
  15. 【龙芯1c库】封装gpio接口和使用示例
  16. 关于微服务中用户身份认证的一点愚见
  17. 直男福利!手把手教你做一只口红色号识别器,秒变李佳琦
  18. 谈悲观、执著、超脱——周国平
  19. Redis C 语言客户端 hiredis 的使用
  20. Linux-centos

热门文章

  1. java8 stream .skip() .limit() 实现分页功能
  2. 20145204 张亚军《信息安全系统设计基础》第12周学习总结
  3. C什么k什么_币圈韭菜必读——什么是K线
  4. 换三张麻将源代码php,理论先行:麻将换三张攻略大全
  5. 博图 Portal v16 相关资源
  6. Python的egg包
  7. Linux视窗系统:QT使用GPU渲染
  8. 读《终身学习:10个你必须掌握的未来生存法则》整理
  9. 一个想法:成立草根技术联盟对开发人员进行技术定级解决企业员工招聘难问题!
  10. 计算机音乐数字乐谱青芒,牵丝戏 - 青芒Qimo - 5SING中国原创音乐基地