Ответ 1
Если size
и max_bq_size
- константы времени компиляции, вы можете использовать #define BQ(size, name)
BUILD_BUG_ON (size > max_bq_size);
. У вас нет специального сообщения, но, по крайней мере, ошибки.
Я хотел бы определить макрос, который также будет проверять пределы его аргументов. Например:
typedef unsigned char Byte;
#define BQDATA 3
#define MAX_BQ_SIZE (255-BQDATA)
#define BQ(SIZE,NAME) \
#if SIZE > MAX_BQ_SIZE \
#error BQ NAME exceeds maximum size \
#endif \
Byte NAME[BQDATA+SIZE+1] = {BQDATA,BQDATA,BQDATA+SIZE}
Итак, если он встречается:
BQ(300,bigq);
Указывает на ошибку.
Если size
и max_bq_size
- константы времени компиляции, вы можете использовать #define BQ(size, name)
BUILD_BUG_ON (size > max_bq_size);
. У вас нет специального сообщения, но, по крайней мере, ошибки.