窄转换编译警告.如何解决它
narrow conversion compile warning. How to fix it?
我收到以下编译时警告:
warning C4838: conversion from 'int' to 'TCHAR' requires a narrowing conversion
该警告基于以下代码:
TCHAR driveName[] = { TEXT('A') + i, TEXT(':'), TEXT(''), TEXT(' ') };
加法TEXT('A') + i
将执行通常的整数提升,将两个操作数转换为整数并生成整数结果。必须将结果显式转换回TCHAR
,以告诉编译器你的意图并消除警告。
TCHAR driveName[] = { static_cast<TCHAR>(TEXT('A') + i), TEXT(':'), TEXT(''), TEXT(' ') };
TEXT('A') + i
涉及整数提升,因此警告。要使警告静音,您可以将结果转换为 TCHAR
。
顺便说一句,不能保证字母'A'
- 'Z'
在C++是连续的(参见EBCDIC的反例)。
沿着TEXT("ABCDEFGHIJKLMNOPQRSTUVWXYZ")[i]
的东西应该修复警告,并且是便携式的。
相关文章:
- 运行同一解决方案的另一个项目的项目
- Project Euler问题4的错误解决方案
- Ardunio UNO解决了多个重叠的定时器循环
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 两个文件使用彼此的功能-如何解决
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 如何解决"invalid conversion from 'char' to 'const char*'"
- 在java中解决这段代码时面临循环中的问题
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 难以理解某些人解决IOI问题的源代码
- visual c++,如何获取解决方案目录中的代码
- 如何解决错误:SCIP C++中的 SCIP 阶段无效 <10>
- 节俭并发:未解决的外部问题
- IpOpt拒绝解决不受约束的问题
- 如何解决这个超硬恒星的创造问题
- 循环无限运行C++解决骑士之旅问题
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- C++Matching Brackets 2解决方案不起作用
- 在 ubuntu3 上C++ goto 定义有什么解决方案吗16.04?
- 为什么一个程序被拒绝为可以通过过载解决来解决的模糊程序