こういうコードを書いたとき、38ってWindows SDKのどこかで#defineされていないの?と疑問に思いました。
#include <iostream> #include <windows.h> int main() { // {00000000-0000-0000-0000-000000000000} GUID guid = GUID_NULL; WCHAR s[39]; // ← これ!!!39ってみんな書くでしょ StringFromGUID2(guid, s, ARRAYSIZE(s)); std::wcout << s << std::endl; } |
というわけで、grepしたところ以下のものが見つかりました。
axcore.idl:#define CHARS_IN_GUID 39
cfgmgr32.h:#define MAX_GUID_STRING_LEN 39
strmif.h:#define CHARS_IN_GUID 39
Msi.h:#define MAX_GUID_CHARS 38
38なのは、最後のヌル文字を含まない場合ですね。
いずれも、<windows.h>などからインクルードされるものではありません。なので、いつでも使おうと無条件に言える感じがしませんが、気が向いたら使ってみてはどうでしょうか、と締めてみます。
スポンサード リンク |