2015-09-03 47 views
1

在C语言中,如果一个const数组进行排序(以升序)或不是如何在编译时期间检查排序。检查常量阵列在编译时期间(C语言)

鉴于阵列是这样的: const int的一个[] = {4,5,6,8};

编译应失败,错误如果上述阵列未被排序。

这可能吗?

+1

你不能用一个C检查编译器。您需要使用单独的工具。 –

+0

有条件的预处理器可以帮助 –

+0

@Dayalrai:请您详细说明。或者帮助写一个代码。 – neo

回答

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