1
在C语言中,如果一个const数组进行排序(以升序)或不是如何在编译时期间检查排序。检查常量阵列在编译时期间(C语言)
鉴于阵列是这样的: const int的一个[] = {4,5,6,8};
编译应失败,错误如果上述阵列未被排序。
这可能吗?
在C语言中,如果一个const数组进行排序(以升序)或不是如何在编译时期间检查排序。检查常量阵列在编译时期间(C语言)
鉴于阵列是这样的: const int的一个[] = {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 arrays\n", __FILE__, __LINE__);
exit(1);
}
}
#endif
你不能用一个C检查编译器。您需要使用单独的工具。 –
有条件的预处理器可以帮助 –
@Dayalrai:请您详细说明。或者帮助写一个代码。 – neo