窄转换编译警告。如何解决?

时间:2018-12-31 04:45:29

标签: c++ visual-c++ compiler-warnings

我收到以下编译时警告:

warning C4838: conversion from 'int' to 'TCHAR' requires a narrowing conversion

警告基于以下代码:

TCHAR driveName[] = { TEXT('A') + i, TEXT(':'), TEXT('\\'), TEXT('\0') };

2 个答案:

答案 0 :(得分:2)

加法mgr, _ := manager.New(cfg, manager.Options{}) cl := mgr.GetClient() rq := &corev1.ResourceQuota{} err = cl.Get(ctx, types.NamespacedName{Name: "my-quota", Namespace: "my-namespace"}, rq) 将执行通常的整数提升,将两个操作数都转换为整数并产生整数结果。您必须将结果明确地返回给TEXT('A') + i,以告知编译器您的意图并消除警告。

TCHAR

答案 1 :(得分:1)

TEXT('A') + i涉及整数提升,因此警告。要使警告静音,您可以将结果强制转换为TCHAR

顺便说一句,在C ++中,无法保证字母'A'-'Z'是连续的(有关示例,请参见EBCDIC)。

TEXT("ABCDEFGHIJKLMNOPQRSTUVWXYZ")[i]上的内容应该可以解决警告,并且便于携带。