本文环境: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)的更多相关文章

  1. Stack overflow 编译能通过,运行时出现Stack overflow

    Stack overflow 编译能通过,运行时出现Stack overflow 大家都知道,Windows程序的内存机制大概是这样的,全局变量(局部的静态变量本质也属于此范围)存储于堆内存,该段内存 ...

  2. WPF 判断一个对象是否是设计时的窗口类型,而不是运行时的窗口

    原文:WPF 判断一个对象是否是设计时的窗口类型,而不是运行时的窗口 当我们对 Window 类型写一个附加属性的时候,在属性变更通知中我们需要判断依赖对象是否是一个窗口.但是,如果直接判断是否是 W ...

  3. android apk 防止反编译技术第二篇-运行时修改字节码

    上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止a ...

  4. android apk 防止反编译技术第二篇-运行时修改Dalvik指令

    上一篇我们讲了apk防止反编译技术中的加壳技术,如果有不明白的可以查看我的上一篇博客http://my.oschina.net/u/2323218/blog/393372.接下来我们将介绍另一种防止a ...

  5. 。net可以点出属性,编译没问题,运行时就报错了。一笔记。

    项目框架是这样的. 在 domain(你可以把它理解为你的bll) ,web 2个项目工程里面都引用了一个通过nuget管理程序包,比如 xxcommon.dll web 引用了 domain ,然后 ...

  6. maven编译问题-maven项目运行时找不到文件,解决方案之一

    问题描述:以上信息是tomcat在启动项目的时候报的错误信息,发现没有找到配置文件,实际上配置文件在项目中是存在的,但是,在编译过程中,配置文件没有能加载到编译后的项目中.就造成了,找不到这些怕配置文 ...

  7. 1.2 - C#语言习惯 - 用运行时常量readonly而不是编译期常量const

    C#中有两种类型的常量:编译期常量和运行时常量.二者有着截然不同的行为,使用不当将会带来性能上或正确性上的问题. 这两个问题最好都不要发生,不过若难以同时避免的话,那么一个略微慢一些但能保证正确的程序 ...

  8. 《C#高效编程》读书笔记02-用运行时常量(readonly)而不是编译期常量(const)

    C#有两种类型的常量:编译期常量和运行时常量.两者有截然不同的行为,使用不当的话,会造成性能问题,如果没法确定,则使用慢点,但能保证正确的运行时常量. 运行时常量使用readonly关键字声明,编译期 ...

  9. 混合语言编程:启用CLR(公共语言运行时编译)让C#调用C++

    前言 关于混合C#和C++的编程方式,本人之前写过一篇博客(参见混合语言编程:C#使用原生的Directx和OpenGL),在之前的博客中,介绍了在C#的Winform和WPF下使用原生的Direct ...

  10. ASP.NET Core3.0 中的运行时编译

    运行时编译 通过 Razor 文件的运行时编译补充生成时编译. 当 .cshtml 文件的内容发生更改时,ASP.NET Core MVC 将重新编译 Razor 文件 . 通过 Razor 文件的运 ...

随机推荐

  1. SciTech-Mathmatics-Probability+Statistics:Quantifing Uncertainty_统计分析: SciTech-Mathmatics-Probability+Statistics:Quantifing Uncertainty_统计数据分析: PROBABILITY DISTRIBUTIONS(常用概率分布)

    一般数学表示方法 概率数学表示方法 \(\large \begin{array}{rl} \\ \bm{X}:& 符合某种概率分布的Random\ Variable(随机变量) \\ \bm{ ...

  2. POLIR-Society-Organization-Republic共和+Management: **决策、结网、组织、常政领导、管理、运营沟通的几条重要原则**

    组织的不同管理以及共和方式; 世界观.决策.授权.制定和审批计划.网络.风险与资源管理.监督和控制. Networking: ice-break破冰.relationship关系.networking ...

  3. 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 ...

  4. Mybatis之数据库连接+PageHelper分页插件+Mybatis-Plus插件

    MyBatis Plus 教程(人人便成为) https://www.cnblogs.com/chch213/p/16320820.html 前言 ORM框架:对象关系映射  object relat ...

  5. win10无法关闭防火墙

    1.win + R 输入regedit进入注册表 2.地址栏输入 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mpssvc 3.双 ...

  6. JavaSE-分支结构

    分支结构 Java 中的分支结构允许程序根据条件执行不同的代码路径,主要通过以下几种控制语句实现: if 语句: 用于在满足特定条件时执行一段代码. 基本语法: if (条件) { // 条件为真时执 ...

  7. C#/.NET/.NET Core技术前沿周刊 | 第 49 期(2025年8.1-8.10)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  8. NewStar CTF[pwn] overwrite WriteUp

    IDA打开,查看func()函数,得到以下代码 点击查看代码 unsigned __int64 func() { size_t input1[6]; // [rsp+Ch] [rbp-84h] BYR ...

  9. [题解]P2444 [POI2000] 病毒

    P2444 [POI2000] 病毒 题目核心是多模式匹配,所以考虑用对所有模式串建立AC自动机. 我们把自动机上,存在一个模式串作为前缀的节点,称作"危险节点". 如果无限长的安 ...

  10. axios 传递参数的方式(data 与 params 的区别)

    1.get请求 axios({ method: 'GET', url: '/xxx', params: param, }) 或者 axios({ method: 'GET', url: '/xxx?m ...