#warning MSACM.H: Defining _UNICODE because application defined UNICODE

 GPPでビルドするとエラーではないが

#warning MSACM.H: Defining _UNICODE because application defined UNICODE

という警告が出る場合があります。この場合、Unicodeを使っているがその宣言をしていないためだと考えます。この場合には

#define _UNICODE //ワイド文字列 (Unicode) 対応

の定義を行えば警告が出ません。是非試してください。プログラム初心者にはわかりにくいですが、プログラム中の文字列の格納方法は

  • Ascii文字(8ビットの英数字、昔からある形式)
  • マルチバイト文字列 (SJIS)  #define _MBCS
  • ワイド文字列 (Unicode) 対応 #define _UNICODE

があります。別に自前で全てを8ビット文字列として扱えば良いと思われますが、既存の関数を使いたい場合は、文字列の違いはこの仕組みで吸収されます。ちょっと苦しいですが覚えておくと良いと考えます。

G++ で warning: 'memcpy' reading between 4 and 9223372036854775804 bytes from a region of size 2 [-Wstringop-overread] 警告

 G++で -flto オプションでコンパイル時に 「 warning: 'memcpy' reading between 4 and 9223372036854775804 bytes from a region of size 2 [-Wstringop-ov...