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 ...
随机推荐
- 再造 “手机QQ” 侧滑菜单(三)——视图联动
代码示例:https://github.com/johnlui/SwiftSideslipLikeQQ 本 文中,我们将一起使用 UINavigationController 来管理主视图,并实现点击 ...
- BZOJ 1578: [Usaco2009 Feb]Stock Market 股票市场( 背包dp )
我们假设每天买完第二天就卖掉( 不卖出也可以看作是卖出后再买入 ), 这样就是变成了一个完全背包问题了, 股票价格为体积, 第二天的股票价格 - 今天股票价格为价值.... 然后就一天一天dp... ...
- 新鲜出炉的Using Qt 3D to visualize music
http://blog.qt.io/blog/2016/01/27/using-qt-3d-visualize-music/
- 基于visual Studio2013解决C语言竞赛题之1009补数
题目 解决代码及点评 /************************************************************************/ ...
- 从汇编角度来理解linux下多层函数调用堆栈执行状态
注:在linux下开发经常使用的辅助小工具: readelf .hexdump.od.objdump.nm.telnet.nc 等,详细能够man一下. 我们用以下的C代码来研究函数调用的过程. C ...
- 配置Eclipse使用外部Maven
当集成Maven时,Eclipse会安装上一个内嵌的Maven, 这个内嵌的Maven通常会比较新,但不一定很稳定,而且往往也会和命令行使用的Maven不是同一个版本.这里又会出现两个潜在的问题:首先 ...
- sudo service memcached start
我安装后memcached后,并使用 ? 1 sudo service memcached start
- 基于visual Studio2013解决面试题之1402选择排序
题目
- Windows Azure入门教学系列 (四):使用Blob Storage
本文将会介绍如何使用Blob Storage.Blob Storage可以看做是云端的文件系统.与桌面操作系统上不同,我们是通过REST API来进行对文件的操作.有关REST API的详细信息,请参 ...
- HDU 3328 Flipper (stack)
最近着手打基础,做做STL的题目,虽然一般STL题目难度不大,但需要加快速度的准确率............................. 本题有N张牌,一开始每个位置一张(正面朝上或者朝下),有 ...