读loki有感 : 编译事(而不是运行时)的断言(assert)
本文环境:VS2005(VC8)
问题一:如果int不是64位,编译无法通过。
char test[sizeof(int)==8];//如果此行编译不过,原因:系统不是64位
原理:
数组的元素不能为0。
类似情况:
Window的int低位在前,高为在后。linux相反,安卓是基于linux的。
问题二:较大类别不能转化成较小类别,比如:int到char。
template<class FROM,class TO>
TO Change(const FROM& from)
{
{
char test[sizeof(TO)>=sizeof(FROM)];//如果此行编译不过,原因:FROM比TO长
}
return from;
}
如下使用没问题:
long i = Change<short,long>(1);
如下使用有问题:
short l = Change<long,short>(2);
VC8的错误信息如下:
1>f:\test\testdlg.cpp(630) : error C2466: 不能分配常量大小为 0 的数组
1> f:\test\testdlg.cpp(645): 参见对正在编译的函数 模板 实例化“TO Change<long,short>(const FROM &)”的引用
1> with
1> [
1> TO=short,
1> FROM=long
1> ]
试了一下loki的方法,VC8下提示过于相信。反而不好找错误。
读loki有感 : 编译事(而不是运行时)的断言(assert)的更多相关文章
- Stack overflow 编译能通过,运行时出现Stack overflow
Stack overflow 编译能通过,运行时出现Stack overflow 大家都知道,Windows程序的内存机制大概是这样的,全局变量(局部的静态变量本质也属于此范围)存储于堆内存,该段内存 ...
- WPF 判断一个对象是否是设计时的窗口类型,而不是运行时的窗口
原文:WPF 判断一个对象是否是设计时的窗口类型,而不是运行时的窗口 当我们对 Window 类型写一个附加属性的时候,在属性变更通知中我们需要判断依赖对象是否是一个窗口.但是,如果直接判断是否是 W ...
- android apk 防止反编译技术第二篇-运行时修改字节码
上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止a ...
- android apk 防止反编译技术第二篇-运行时修改Dalvik指令
上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止a ...
- 。net可以点出属性,编译没问题,运行时就报错了。一笔记。
项目框架是这样的. 在 domain(你可以把它理解为你的bll) ,web 2个项目工程里面都引用了一个通过nuget管理程序包,比如 xxcommon.dll web 引用了 domain ,然后 ...
- maven编译问题-maven项目运行时找不到文件,解决方案之一
问题描述:以上信息是tomcat在启动项目的时候报的错误信息,发现没有找到配置文件,实际上配置文件在项目中是存在的,但是,在编译过程中,配置文件没有能加载到编译后的项目中.就造成了,找不到这些怕配置文 ...
- 1.2 - C#语言习惯 - 用运行时常量readonly而不是编译期常量const
C#中有两种类型的常量:编译期常量和运行时常量.二者有着截然不同的行为,使用不当将会带来性能上或正确性上的问题. 这两个问题最好都不要发生,不过若难以同时避免的话,那么一个略微慢一些但能保证正确的程序 ...
- 《C#高效编程》读书笔记02-用运行时常量(readonly)而不是编译期常量(const)
C#有两种类型的常量:编译期常量和运行时常量.两者有截然不同的行为,使用不当的话,会造成性能问题,如果没法确定,则使用慢点,但能保证正确的运行时常量. 运行时常量使用readonly关键字声明,编译期 ...
- 混合语言编程:启用CLR(公共语言运行时编译)让C#调用C++
前言 关于混合C#和C++的编程方式,本人之前写过一篇博客(参见混合语言编程:C#使用原生的Directx和OpenGL),在之前的博客中,介绍了在C#的Winform和WPF下使用原生的Direct ...
- ASP.NET Core3.0 中的运行时编译
运行时编译 通过 Razor 文件的运行时编译补充生成时编译. 当 .cshtml 文件的内容发生更改时,ASP.NET Core MVC 将重新编译 Razor 文件 . 通过 Razor 文件的运 ...
随机推荐
- SciTech-Mathmatics-Probability+Statistics:Quantifing Uncertainty_统计分析: SciTech-Mathmatics-Probability+Statistics:Quantifing Uncertainty_统计数据分析: PROBABILITY DISTRIBUTIONS(常用概率分布)
一般数学表示方法 概率数学表示方法 \(\large \begin{array}{rl} \\ \bm{X}:& 符合某种概率分布的Random\ Variable(随机变量) \\ \bm{ ...
- POLIR-Society-Organization-Republic共和+Management: **决策、结网、组织、常政领导、管理、运营沟通的几条重要原则**
组织的不同管理以及共和方式; 世界观.决策.授权.制定和审批计划.网络.风险与资源管理.监督和控制. Networking: ice-break破冰.relationship关系.networking ...
- SciTech-EECS-Wireless-BLE(Bluetooth Low Energy)5.4- Nordic Semi. 的Bluetooth Low Energy SoCs
蓝牙5.4低功耗: 市场上主流的供货方和解决方案: TI SiLabs: BG22, BG24, BG21 Nordic Semi. : nRF5340, nrf52*, https://www.no ...
- Mybatis之数据库连接+PageHelper分页插件+Mybatis-Plus插件
MyBatis Plus 教程(人人便成为) https://www.cnblogs.com/chch213/p/16320820.html 前言 ORM框架:对象关系映射 object relat ...
- win10无法关闭防火墙
1.win + R 输入regedit进入注册表 2.地址栏输入 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mpssvc 3.双 ...
- JavaSE-分支结构
分支结构 Java 中的分支结构允许程序根据条件执行不同的代码路径,主要通过以下几种控制语句实现: if 语句: 用于在满足特定条件时执行一段代码. 基本语法: if (条件) { // 条件为真时执 ...
- C#/.NET/.NET Core技术前沿周刊 | 第 49 期(2025年8.1-8.10)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- NewStar CTF[pwn] overwrite WriteUp
IDA打开,查看func()函数,得到以下代码 点击查看代码 unsigned __int64 func() { size_t input1[6]; // [rsp+Ch] [rbp-84h] BYR ...
- [题解]P2444 [POI2000] 病毒
P2444 [POI2000] 病毒 题目核心是多模式匹配,所以考虑用对所有模式串建立AC自动机. 我们把自动机上,存在一个模式串作为前缀的节点,称作"危险节点". 如果无限长的安 ...
- axios 传递参数的方式(data 与 params 的区别)
1.get请求 axios({ method: 'GET', url: '/xxx', params: param, }) 或者 axios({ method: 'GET', url: '/xxx?m ...