给定最大可能值,如何简单地表示以十进制形式将此类数字写入文本所需的空间?
pid_t
真正的任务:在 Linux 上使用 gcc 以固定长度记录进程 id ( )。在std::setw()
iomanipulator 中使用编译时表达式会很好。
我发现linux/threads.h标头包含一个PID_MAX
分配给进程的最大 pid 值。所以有
#define LENGTH(t) sizeof(#t)-1
这LENGTH(PID_MAX)
将是一个编译时表达式,但不幸的是这个数字是在十六进制中定义的:
#define PID_MAX 0x8000
我目前最好的解决方案有点奇怪
static_cast<int>( ::floor( ::log(PID_MAX)/::log(10) + 1 ) );
但这是计算运行时并使用math.h中的函数