我们可以在运行时通过sysconf(_SC_PAGESIZE)
. 我的第一个意图是将程序启动时的这个值放入具有静态存储持续时间的对象中。所以我的意图是extern
在文件范围内声明一些变量,如下所示
extern const size_t page_size;
但是当我尝试在文件范围内的其他地方定义它时
const size_t page_size = (const size_t) sysconf(_SC_PAGESIZE);
它不编译。这似乎很清楚,因为6.7.9(p4)
:
具有静态或线程存储持续时间的对象的初始化程序中的所有表达式都应为常量表达式或字符串文字。
我不想在sysconf(_SC_PAGESIZE)
需要页面大小的任何时候打电话。是否有一些解决方法或常见的解决方案是什么?