当前位置:网站首页>【genius_platform软件平台开发】第七十六讲:vs预处理器定义的牛逼写法!!!!(其他组牛逼conding人员告知这么配置来取消宏定义)
【genius_platform软件平台开发】第七十六讲:vs预处理器定义的牛逼写法!!!!(其他组牛逼conding人员告知这么配置来取消宏定义)
2022-08-05 01:56:00 【隨意的風】
vs预处理器定义的牛逼写法!!!!
1.问题概述
- 今天组内小伙伴在调试算法接口时,总是在算法接口崩溃,发现vs提示信息为vector too long…结果算法人员告诉设置预编译器定义
_HAS_ITERATOR_DEBUGGING=0
取消该宏定义。我擦,这是什么骚操作,还行这么玩,一看就感觉有问题,结果为了证明这样是取消不了该宏的定义的,特此进行了一下验证;
2. main.cpp源代码(vs2017环境,其他vs环境都可以):
#ifdef _HAS_ITERATOR_DEBUGGING
#define x_1 1
#pragma message ("#define x_1 1")
#endif
#ifdef _HAS_ITERATOR_DEBUGGING
#define y_1 1
#pragma message ("#define y_1 1")
#endif
#include <iostream>
int main()
{
//int x = 0;
#ifdef _HAS_ITERATOR_DEBUGGING
{
printf("#ifdef _HAS_ITERATOR_DEBUGGING\n");
printf("x_z = %d\n", _HAS_ITERATOR_DEBUGGING);
printf("x_1 = %d\n", x_1);
printf("y_1 = %d\n", y_1);
}
#endif
if (_HAS_ITERATOR_DEBUGGING == 0)
{
printf("if (_HAS_ITERATOR_DEBUGGING == 0)\n");
printf("x_z = %d\n", _HAS_ITERATOR_DEBUGGING);
printf("x_1 = %d\n", x_1);
printf("y_1 = %d\n", y_1);
}
if (_HAS_ITERATOR_DEBUGGING == 1)
{
printf("if (_HAS_ITERATOR_DEBUGGING == 1)\n");
printf("x_z = %d\n", _HAS_ITERATOR_DEBUGGING);
printf("x_1 = %d\n", x_1);
printf("y_1 = %d\n", y_1);
}
if (_HAS_ITERATOR_DEBUGGING == 2)
{
printf("if (_HAS_ITERATOR_DEBUGGING == 2)\n");
printf("x_z = %d\n", _HAS_ITERATOR_DEBUGGING);
printf("x_1 = %d\n", x_1);
printf("y_1 = %d\n", y_1);
}
// printf("%d\n", vtkBooleanMacro(x,=,1));
std::cout << "Hello World!\n";
getchar();
}
3. 预处理器定义为_HAS_ITERATOR_DEBUGGING=0
3.1 查看重新编译log
- 该宏被编辑器预定义
_HAS_ITERATOR_DEBUGGING 为 0
,但是该_HAS_ITERATOR_DEBUGGING
还是属于被预定义状态;
3.2 查看运行结果
#ifdef _HAS_ITERATOR_DEBUGGING
判断已经被预定义,或者使用if(_HAS_ITERATOR_DEBUGGING == 0/1)
这种骚操作很少,起不到取消该_HAS_ITERATOR_DEBUGGING
的定义
4. 预处理器定义为_HAS_ITERATOR_DEBUGGING=1
4.1 查看重新编译log
- 该宏被编辑器预定义
_HAS_ITERATOR_DEBUGGING 为 1
,但是该_HAS_ITERATOR_DEBUGGING
还是属于被预定义状态;
4.1 查看运行结果
5. 预处理器定义为_HAS_ITERATOR_DEBUGGING=2
5.1 查看重新编译log
- 编译阶段直接报错,如图;
6. 总结
- 只要在预处理器界面中定义了
_HAS_ITERATOR_DEBUGGING
宏,即编辑器在编辑阶段便会定义该宏。一般不会再对该宏执行=赋值操作
(应该是认知错误,想取消该宏的定义); - 如果真的想玩骚操作、乱七八糟非正常设置,那么也只能设置为0/1(很少有这么使用的);而且在程序中也只能使用
if(_HAS_ITERATOR_DEBUGGING == xxxx)
等形式进行判断,#ifdef _HAS_ITERATOR_DEBUGGING
永远都是有效的,被预定义的宏; - 想取消某个宏的设置,配置成
_HAS_ITERATOR_DEBUGGING=0
是起不到取消宏定义作用的;真的想取消还是要去除该宏的配置;
边栏推荐
- 1349. Maximum number of students taking the exam Status Compression
- 深度学习原理学习小结 - Self-Attention/Transformer
- 没有对象的程序员如何过七夕
- Live playback including PPT download | Build Online Deep Learning based on Flink & DeepRec
- (十七)51单片机——AD/DA转换
- LPQ (local phase quantization) study notes
- 多线程涉及的其它知识(死锁(等待唤醒机制),内存可见性问题以及定时器)
- 基于OpenVINO工具套件简单实现YOLOv7预训练模型的部署
- pytorch的使用:卷积神经网络模块
- Opencv - video frame skipping processing
猜你喜欢
LPQ (local phase quantization) study notes
直播回放含 PPT 下载|基于 Flink & DeepRec 构建 Online Deep Learning
一文看懂推荐系统:召回06:双塔模型——模型结构、训练方法,召回模型是后期融合特征,排序模型是前期融合特征
HOG feature study notes
Live preview | 30 minutes started quickly!Look at credible distributed AI chain oar architectural design
【TA-霜狼_may-《百人计划》】图形4.3 实时阴影介绍
10年测试经验,在35岁的生理年龄面前,一文不值
安装oracle11的时候为什么会报这个问题
从一次数据库误操作开始了解MySQL日志【bin log、redo log、undo log】
Jincang database KingbaseES V8 GIS data migration solution (3. Data migration based on ArcGIS platform to KES)
随机推荐
原生js实现多选框全部选中和取消效果
迁移学习——Joint Geometrical and Statistical Alignment for Visual Domain Adaptation
LPQ (local phase quantization) study notes
day14--postman接口测试
Transfer Learning - Joint Geometrical and Statistical Alignment for Visual Domain Adaptation
从一次数据库误操作开始了解MySQL日志【bin log、redo log、undo log】
如何逐步执行数据风险评估
【翻译】CNCF对OpenTracing项目的存档
CPDA|运营人如何从负基础学会数据分析(SQL)
Live playback including PPT download | Build Online Deep Learning based on Flink & DeepRec
Leetcode brushing questions - 22. Bracket generation
【七夕如何根据情侣倾听的音乐进行薅羊毛】背景音乐是否会影响情侣对酒的选择
浅谈数据安全治理与隐私计算
hypervisor相关的知识点
C language basics -- pointers
英特尔 XDC 2022 精彩回顾:共建开放生态,释放“基建”潜能
IJCAI2022 | DictBert:采用对比学习的字典描述知识增强的预训练语言模型
day14--postman interface test
.Net C# 控制台 使用 Win32 API 创建一个窗口
“嘀哩哩,等灯等灯”,工厂安全生产的提示音