窄转换编译警告。如何解决?
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('[=11=]') };
加法 TEXT('A') + i
将进行通常的整数提升,将两个操作数都转换为整数并产生整数结果。您必须明确地将结果转换回 TCHAR
以告诉编译器您的意图并消除警告。
TCHAR driveName[] = { static_cast<TCHAR>(TEXT('A') + i), TEXT(':'), TEXT('\'), TEXT('[=10=]') };
TEXT('A') + i
涉及整数提升,所以警告。要消除警告,您可以将结果转换为 TCHAR
.
顺便说一句,不能保证字母 'A'
-'Z'
在 C++ 中是连续的(反例参见 EBCDIC)。
TEXT("ABCDEFGHIJKLMNOPQRSTUVWXYZ")[i]
应该修复警告,并且可以移植。
我收到以下编译时警告:
warning C4838: conversion from 'int' to 'TCHAR' requires a narrowing conversion
警告基于以下代码:
TCHAR driveName[] = { TEXT('A') + i, TEXT(':'), TEXT('\'), TEXT('[=11=]') };
加法 TEXT('A') + i
将进行通常的整数提升,将两个操作数都转换为整数并产生整数结果。您必须明确地将结果转换回 TCHAR
以告诉编译器您的意图并消除警告。
TCHAR driveName[] = { static_cast<TCHAR>(TEXT('A') + i), TEXT(':'), TEXT('\'), TEXT('[=10=]') };
TEXT('A') + i
涉及整数提升,所以警告。要消除警告,您可以将结果转换为 TCHAR
.
顺便说一句,不能保证字母 'A'
-'Z'
在 C++ 中是连续的(反例参见 EBCDIC)。
TEXT("ABCDEFGHIJKLMNOPQRSTUVWXYZ")[i]
应该修复警告,并且可以移植。