__decspec(selectany)
我们在使用宏定义一类的技术时,容易发生符号的重定义,特别在这个符号是全局变量时。
可以使用__decspec(selectany)提示编译器,可以重定义此符号。
1.cpp
int sym = 1;
int main()
{
...
}
2.cpp
int sym = 1;
void function()
{...}//only used to prompt the sym is global symbol
编译器会提示,符号重定义。
我们两种解决方案:
1.cpp
int sym = 1;
int main()
{
...
}
2.cpp
extern int sym;
void function()
{...}//only used to prompt the sym is global symbol
第一个方法就是不要重定义咯~
1.cpp
extern __declspec(selectany) int sym = 1;
int main()
{
...
}
2.cpp
extern __declspec(selectany) int sym = 1;
void function()
{...}//only used to prompt the sym is global symbol
这个时候编译器会任选一个sym的定义作为sym的定义语句。
所以,我们通常这么也这么定义:
extern const __declspec(selectany) int sym = 1;
以上
转载于:https://www.cnblogs.com/wangpei0522/p/4801714.html
__decspec(selectany)相关推荐
- __declspec(selectany)的作用
__declspec是一个Microsoft Visual C++特定的编译器属性开关.括号中指 明的是哪一个属性生效.关于__declspec的其他属性可以百度"__declspec ms ...
- Windows C++中__declspec(dllexport)的使用
__declspec是Microsoft VC中专用的关键字,它配合着一些属性可以对标准C/C++进行扩充.__declspec关键字应该出现在声明的前面. __declspec(dllexport) ...
- 从零开始学C++之动态创建对象
回顾前面的文章,实现了一个简单工厂模式来创建不同类对象,但由于c++没有类似new "Circle"之类的语法,导致CreateShape 函 数中需要不断地ifelse地去判断, ...
- c++ 中__declspec 的用法
语法说明: __declspec ( extended-decl-modifier-seq ) 扩展修饰符: 1:align(#) 用__declspec(align(#))精确控制用户自定数 ...
- 不要重复发明轮子:C++重用的5重境界
软件领域有一个著名的描述软件重用的谚语:不要重复发明轮子! 这个道理是很简单,也很明白的,谁都不想重复无用的劳动,但具体实践中我们该如何避免重复发明轮子呢? 各位注意了,谚语中是说"重复发明 ...
- VC实现基于Office 2007 MODI 12.0实现图形文字识别(OCR)的程序
1.安装Microsoft Office Document Imaging 1)查看是否安装:开始->所有程序->Microsoft Office->工具-> Microsof ...
- C++实现类似反射模式(模板)
C++实现类似反射模式(模板) 编程技巧 2010-11-23 21:08:02 阅读70 评论0 字号:大中小 订阅 最近在编写遥感算法工具箱的时候,工具都是在xml文件中配置好的,在工具箱上构 ...
- __declspec关键字详细用法
__declspec关键字详细用法 2009-01-21 16:23 __declspec用于指定所给定类型的实例的与Microsoft相关的存储方式.其它的有关存储方式的修饰符如static与ext ...
- __declspec
__declspec __cdecl和__stdcall都是函数调用规范(还有一个__fastcall),规定了参数出入栈的顺序和方法, 如果只用VC编程的话可以不用关心,但是要在C++和Pascal ...
最新文章
- 【 MATLAB 】使用 impz 函数计算并画出脉冲响应
- Idea开发Java WEB 应用
- JS 做的鼠标放大镜(初级)
- [Python人工智能] 二十六.基于BiLSTM-CRF的医学命名实体识别研究(上)数据预处理
- Python 多进程pool.map()方法的使用
- ERP的配置管理实践
- mqtt js 中乱码_ES6中模块导入遇到的问题及其解决办法
- 从零开始学习前端JAVASCRIPT — 7、JavaScript基础EVENT
- 关于Unity中关节的使用(一)
- ARM基础学习-寄存器寻址方式和指令
- 2.6.4 调色板技术
- 51单片机课设--篮球计分器
- 红外真空离心浓缩仪ZLNS-II
- 全网首份pyQt6飞机大战
- 学习现代化的文章编写方式——关于Markdown语法的使用
- Android练手小项目---仿凤凰新闻app
- ceph mon 无法启动,报错:ceph-12.2.11/src/mon/AuthMonitor.cc: 157: FAILED assert(ret == 0)
- 最迷幻的办法解决SpringBoot访问static文件夹下的静态资源
- 川普的退休生活?不,是AI算法的宅舞演绎。
- 20145204 张亚军《信息安全系统设计基础》第12周学习总结