在C语言中,如何在编译时检查const数组是否排序(按升序排列)
给定如下数组:Const int a[] = {4,5,6,8};
如果上面的数组没有排序,编译将失败并出现错误。
这可能吗?
这在编译时是非常困难的,使用标准工具(预处理器等)甚至可能是不可能的。
也许一个更好的解决方案是,在数组创建后尽快,简单地让代码检查它(你也可以禁用像assert
):
const int a[] = { 4, 5, 6, 8 };
#ifndef NDEBUG
for (int i = 1; i < sizeof(a) / sizeof(a[0]); i++) {
if (a[i-1] > a[i]) {
fprintf (stderr, "%s(%d) Check your arraysn", __FILE__, __LINE__);
exit(1);
}
}
#endif