c++ anonymous namespace -- 匿名空间
c++ anonymous namespace -- 匿名空间
- #include <stdio.h>
- namespace A {
- int ID = 1;
- }
- namespace {
- int ID = 11;
- }
- namespace B {
- int ID = 21;
- }
- int main(void){
- printf("ID %d \n",ID);
- }
输出
- ID 11
这里用到是C的函数,减少std空间的干扰。这里输出的是匿名空间的内容。那么就类似于如下用法
- namespace __UNIQUE_NAME_ {
- int ID;
- }
- using namespace __UNIQUE_NAME_;
如果修改代码如下
- #include <stdio.h>
- namespace A {
- int ID = 1;
- }
- namespace {
- int ID = 11;
- }
- namespace B {
- int ID = 21;
- }
- namespace {
- int ID = 41;
- }
- int main(void){
- printf("ID %d \n",ID);
- }
编译报错,如下
- t_anonymity_space.cpp:14: error: redefinition of ‘int ::ID’
- t_anonymity_space.cpp:7: error: ‘int ::ID’ previously defined here
- //file def.h
- namespace {
- int ID = 41;
- }
- #include <stdio.h>
- #include "def.h"
- namespace A {
- int ID = 1;
- }
- namespace {
- int ID = 11;
- }
- namespace B {
- int ID = 21;
- }
- int main(void){
- printf("ID %d \n",ID);
- }
- t_anonymity_space.cpp:7: error: redefinition of ‘int ::ID’
- def.h:3: error: ‘int ::ID’ previously defined here
- #include <stdio.h>
- namespace A {
- int ID = 1;
- }
- namespace {
- int ID = 11;
- int id = 12;
- }
- namespace B {
- int ID = 21;
- }
- int main(void){
- printf("ID %d \n",ID);
- using namespace A;
- printf("ID %d - %d - %d \n",A::ID, ::ID, id);
- }
- ID 11
- ID 1 - 11 - 12
c++ anonymous namespace -- 匿名空间的更多相关文章
- anonymous namespace V.S. static variant
[anonymous namespace V.S. static variant] 在C语言中,如果我们在多个tu(translation unit)中使用了同一个名字做为函数名或者全局变量名,则在链 ...
- Kubernetes K8S之Pod跨namespace名称空间访问Service服务
Kubernetes的两个Service(ServiceA.ServiceB)和对应的Pod(PodA.PodB)分别属于不同的namespace名称空间,现需要PodA和PodB跨namespace ...
- scoping作用域,anonymous function匿名函数,built-in functions内置函数
作用域练习1 def test1(): print('in the test1') def test(): print('in the test') return test1 res = test() ...
- c++ 的namespace及注意事项
前文 下文中的出现的"当前域"为"当前作用域"的简写 namepsace在c++中是用来避免不同模块下相同名字冲突的一种关键字,本文粗略的介绍了一下namesp ...
- C++ 匿名名字空间及静态非成员函数
在C++中,static有一个感觉被较少提及的用法:修饰非成员函数,这个用法实际是从C语言继承来的.其作用是表明这个函数只在当前编译单元中有效.这就使这个函数的所有引用在编译时就可以全部确定,无需进入 ...
- 【转】利用匿名namespace解决C++中重复定义的问题
目录 利用匿名namespace解决C++中重复定义的问题 原文:https://blog.csdn.net/pi9nc/article/details/11267031 利用匿名namespace解 ...
- ASP.NET MVC3控制器传递匿名对象到视图实例
ASP.NET MVC3 + Entity Framework项目中,从控制器传递匿名对象到视图非常常见,原本以为用dynamic能轻松搞定,最后发现我错了: Controller: 代码如下 复制 ...
- C++匿名命名空间
当定义一个命名空间时,可以忽略这个命名空间的名称: namespce { char c; int i; double d; } ...
- namespace、struct、enum、union、string(day01)
一 C++概述 C++历史背景 )C++的江湖地位 jave C C++ C# python )C++之父:Bjarne Stroustrup(--) ,Cpre,为C语言增加类的机制 ,Bjarne ...
随机推荐
- 在 vb中 "end","unload me","exit sub" 之间的区别
之前就想过这个问题,这么熟悉的几个东西居然对他们分析的不是很透彻. “End” 跟 “Unload Me” 在敲程序 的时候经常敲到,“exit sub” 更是熟悉,下面,解析: End ...
- Linux命令之find(一)
find命令的使用格式为:find options path expressions find命令事实上有两种options,一种是"真正属于自己的",还有一种位于expressi ...
- 自定义类似QMutexLocker的CMutexLocker
最近做项目遇到一个需求,有一个buttonSlot()执行要耗点时间,为了防止用户无限制的乱点出现问题,考虑加一个互斥锁,使得每次执行完后才允许执行下一次.大概意思是: //QMutex m_mut ...
- jackson 转json. 过滤null值
@Test public void tttttt() throws JsonGenerationException, JsonMappingException, IOException { Objec ...
- 基于visual Studio2013解决C语言竞赛题之0802图书信息查询
题目 解决代码及点评 /* 功能:有一批图书,每本书有:书名(name),作者(author) , 编号(num),出版日期(date)四个数据, 希望输入后按书名的字母顺序将各书的记录排列好, ...
- Fedora20安装完Nvidia后启动一直黑屏解决办法。
安装完Fedora20后,把Nvidia驱动装上后重起机器一直黑屏时,切换到命令行下:Alt+F2 登陆上去,然后直接更新: su -c ‘yum update’ ,再重起就OK了.
- c++怎样让返回对象的函数不调用拷贝构造函数
我们知道拷贝构造函数有两种“默默”的方式被调用 1. 想函数传入 值参数 2. 函数返回 值类型 今天我们讨论函数返回值类型的情况. 得到结论是 1. 当对象有拷贝构造函数(系统为我们生成.或者我们自 ...
- 在WINDOWS下 三步快速配置 eclipse c++ 环境
所需软件 1.Eclipse IDE for C/C++ Developers http://www.eclipse.org/downloads/packages/eclipse-ide-cc-dev ...
- android开发1:安卓开发环境搭建(eclipse+jdk+sdk)
计划折腾折腾安卓开发了,从0开始的确很痛苦,不过相信上手应该也不会太慢.哈哈 一.Android简介 Android 是基于Linux内核的软件平台和操作系统. Android构架主要由3部分组成,l ...
- Troubleshooting(updating...)
记录了工作和学习中一些杂碎的问题. 问题:RDP一直处于连接状态,除非重启 描述:表面看上去是应该在一定时间还连接不上,就让它断开.深层问题是,初次连接一个新的IP地址,Win7以上的系统,会有个CA ...