В вашей функции напишите
assert_or_return(first_arg != NULL);
assert_or_return(second_arg != NULL);
Определите assert_or_return, чтобы в отладочной версии он запускал отладчик (вызывая прерывание), а в версии выпуска регистрировал ошибку и возвращал (какты хочешь сделать).Я предполагаю, что вы уверены, что возвращение из функции, когда один из аргументов равен NULL, принесет больше пользы, чем вреда в рабочей версии вашего приложения.Если, вернувшись рано, вы безвозвратно испортите данные своих пользователей или вызовете взрыв печи, было бы лучше завершить работу раньше, возможно, с помощью специального сообщения об ошибке.
Следующий пример иллюстрирует, как ваша идея может быть реализована.
#ifdef NDEBUG
#define assert_or_return(expr) do { \
if (!(expr)) { \
fprintf(logfile, "Assertion %s in %s(%d) failed\n", #expr, __FILE__, __LINE__); \
return 0; \
} \
} while(0)
#else
#define assert_or_return(expr) do { \
if (!(expr)) { \
fprintf(stderr, "Assertion %s in %s(%d) failed\n", #expr, __FILE__, __LINE__); \
abort(); \
} \
} while(0)
#endif