clang で 64bit 整数から 32bit 整数への暗黙の型変換を警告するには、-Wshorten-64-to-32
オプションを指定します。
#include <stdint.h>
int main()
{
int64_t x = 1;
int32_t y = x;
return 0;
}
$ # M1 Mac (Ventura) + Apple clang 14.0.0
$ clang sample.cpp -Wshorten-64-to-32
sample.cpp:6:17: warning: implicit conversion loses integer precision: 'int64_t' (aka 'long long') to 'int32_t' (aka 'int') [-Wshorten-64-to-32]
int32_t y = x;
~ ^
1 warning generated.
警告を抑制する
逆に、警告を抑制したい場合は -Wno-shorten-64-to-32
オプションを指定します。 このオプションを指定することで、既に指定されたオプションを打ち消すことができます。
$ # M1 Mac (Ventura) + Apple clang 14.0.0
$ clang sample.cpp -Wshorten-64-to-32 -Wno-shorten-64-to-32
$
参考資料
- Diagnostic flags in Clang — Clang documentation
https://clang.llvm.org/docs/DiagnosticsReference.html#wshorten-64-to-32