プラットフォームにより異なす世代のC++?
-
23-08-2019 - |
質問
何のプログラムを生成することでUUIDやC++などのプラットフォームで特定のツールなのでしょうか?いうリクエストに一意な識別子オブジェクトシミュレーションができなマイクロソフトの実装のプロジェクトがクロスプラットフォーム.
注記:
- このためのシミュレーター、 不要なのかもしれませんの暗号化 乱数の発生.
- している場合には32ビット番号です。
他のヒント
Linux上:男性UUID
勝利に:MSDNでのUUIDの構造とUuidCreateの機能のためにチェックアウト
[編集]機能は、このように表示されます。
extern "C"
{
#ifdef WIN32
#include <Rpc.h>
#else
#include <uuid/uuid.h>
#endif
}
std::string newUUID()
{
#ifdef WIN32
UUID uuid;
UuidCreate ( &uuid );
unsigned char * str;
UuidToStringA ( &uuid, &str );
std::string s( ( char* ) str );
RpcStringFreeA ( &str );
#else
uuid_t uuid;
uuid_generate_random ( uuid );
char s[37];
uuid_unparse ( uuid, s );
#endif
return s;
}
が支払えない場合は使用力、それが非常に少な図書館が私の実施だけでは行為としてのラッパ各事業システムのネイティブガイドの実装です。ではWindowsを使用 CoCreateGuid
)、Linuxを使用 libuuid
)、MacOS用 CFUUID
)ミュレーションソフトウェアも利用 CFUUID
)は、Androidを使用JNI呼 java.util.UUID
).のことで発生機能には、異なる実施システムが単一の汎用実装のための比較stringifying、解析.
ではMITラやGitHub:
単にGUID / UUIDは、ターゲットプラットフォーム上に存在しているものは何でも使用することが最善です。右のそれを行うと(の買い物に行かせ;)難しいです。)
異なるが、うまく実行実装から任意の二つの識別子の間の衝突の確率が良く、この宇宙の一生の間に起こって、任意の合理的なチャンスを超えなければなりません。
GUIDジェネレータは、通常、マシンのハードウェア特性、MACアドレスやIPアドレスなどの通常のものに依存しています。絶対にプラットフォームに依存しているあなたがすることができる唯一のことは、手動で PRNG にシードさのいくつかの種類を使用していますか、いくつかのタイムソースから播種しました。これは通常、あなたは世界で誰もが同じ番号を生成しないことが保証されている意味で真のグローバル一意識別子を生成しません。
まあ1人の風変わりな(?)ソリューションは、GUIDを取得するには、Webサービスを使用することですが、私は、これはそれが有効なネットワークいない場合は特にC ++プログラムのための良い解決策はないだろう。
ここでは、このオプションを追求することを選択した場合には便利になるかもしれないURLは次のとおりです。ます。http: //www.hoskinson.net/GuidGenerator/default.aspする