2

我想以独立于平台的方式(这意味着没有 #if #else 宏开关)在 C++ 中获得当前实例的某种唯一整数值​​(无论它是进程 ID 还是其他任何东西)。

基于时间的值不可靠,因为两个实例可以同时启动。

有没有办法做到这一点?

编辑:它不必是全球唯一的。它只需要在系统范围内是唯一的。

4

4 回答 4

5

看一下Boost过程。可能正是您正在寻找的。如果您不想包含该库,您可以查看该功能是如何实现的。

于 2011-10-11T18:34:45.710 回答
1

这可能是一个矫枉过正,但看看Quuid

于 2011-10-11T18:33:23.120 回答
1

我认为,您需要通用唯一标识符

于 2011-10-11T18:37:04.040 回答
1

长话短说,答案是否定的,而不是不使用特定于平台的功能。

[C++03]

C++ 语言本身不提供任何机制来做到这一点。事实上,C++ 本身对进程或进程间通信一无所知。如果不使用特定于平台的功能——要么由你手动滚动,这意味着#ifdefs,要么在像 Boost 这样的跨平台第三部分库中,这也意味着 s——#ifdef这是无法完成的。

...和...

[C++11]

C++ 语言有一个基本的线程概念,但它没有提供任何机制(我可以看到)来创建进程间通信机制,所以上面仍然适用。

于 2011-10-11T18:50:54.787 回答