2015-09-03 3 views
1

На языке C, как проверить во время компиляции, если массив const отсортирован (в порядке возрастания) или нет.Проверьте, отсортирован ли массив const во время компиляции (язык C)

Учитывая массив, подобный этому: const int a [] = {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 
Смежные вопросы