在C语言中,如果const数组按顺序排序(按升序排序),如何在编译期间检查。
给定一个这样的数组: const int a [] = {4,5,6,8};
如果上面的数组没有排序,编译将失败并显示错误。
这甚至可能吗?
答案 0 :(得分:0)
这在编译时很难完成非常,使用标准工具(预处理器等)甚至可能无法实现。
也许更好的解决方案是在数组创建后尽快让代码检查它(你也可以像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 arrays\n", __FILE__, __LINE__);
exit(1);
}
}
#endif