Можно ли аннотировать макросы C с помощью ACSL?
eg:
/*@
assigns \nothing;
behavior xmin:
assumes x < y;
ensures \result == x;
behavior ymin:
assumes y <= x;
ensures \result == y;
disjoint behaviors;
complete behaviors;
@*/
#define min(x,y) (x < y ? x : y)
или даже вызовы функций, такие как
#define min(x,y) __min(x,y)
Я уже пробовал, но безуспешно. Я что-то не так делаю или это просто невозможно?
gcc -C -E -I.
. После этой предварительной обработки контракт, который вы предлагаете в качестве первого примера, больше не имеет смысла (см. предварительно обработанный файл для себя, набравgcc -C -E -I.
самостоятельно). Что я делаю, так это преобразовываю такие макросы в функции с целью их аннотирования. - person Pascal Cuoq   schedule 29.03.2013