Назрела и перезрела уже необходимость встраивать какие-то проверки. Более серьезные, чем границы массивов... Тесты, имитирующие ситуации ошибок. Причем, видимо, без связи с запуском собственно программы, бо там каждый запуск - очень долгая история...
Все, что приходит в голову, это держать в хвосте файла под #ifdef процедуру main, которая будет вызывать все функции модуля с разными параметрами. Но это потребует слишком многих компиляций. Есть еще вариант - держать функцию, которая тестирует весь модуль, определять ее тоже каким-то прекомпиляционным флагом. И отдельно стоящий main, все эти тесты вызывающий...
Собственно вопрос: есть ли на эту тему какие-то стандарты, разработки, как принято организовывать подобные вещи?