Некоторое время назад я сделал этот красивый макрос assert для программ c и С++
#define ASSERT(truthy, message) \
if (!(truthy)) \
{\
cout << message << " on line " << __LINE__ << " in file " << __FILE__ << ". Check was " << #truthy << endl;\
}
Абонент Scatter ASSERT выполняет весь код, и он будет предупреждать вас, когда значение truthy
не является правдивым! Очень удобно во время разработки, чтобы напомнить вам о возможных ошибках.
ех
ASSERT(filesFound > 0, "Couldn't find any files, check your path!");
Когда filesFound равен 0, макрос распечатает
Не удалось найти файлы, проверить свой путь! в строке 27 в файле openFiles.c. Проверьте, были ли файлыFound > 0
Теперь то, что я хочу, чтобы оно печаталось, чтобы дать мне еще более актуальную информацию, является значение любых переменных, переданных в параметр truthy
. Как этот
Не удалось найти файлы, проверить свой путь! в строке 27 в файле openFiles.c. Проверка была filesFound > 0, filesFound - 0
Похоже, что это выглядит как lisp -полюсная территория, есть ли какая-либо черная магия c предварительной обработки, которую я могу использовать для оценки переменных и функций по их значениям без оценки оператора truthy
?
Я предполагаю, что разочарован.