我想在C语言中做如下操作:

doSomthing(test_arg1); // first time
check_if_everything_good();

doSomething(test_arg2); // second time
check_if_everything_good();

doSomething(test_arg3); // third time
check_if_everything_good();

我的想法是,在调用doSomething()之后,我想通过调用check-if-u-everything-good()来确保函数调用没有损坏其他任何东西。如果doSomething()损坏了某个东西,请在第二次doSomething()调用之前检查是否返回了“一切正常”。
不过,我想避免在doSomething()之后每次都调用check_everything_good(){check_everything_good is昂贵}。有没有一种方法可以让我在C语言中高效地实现这一点?可能像java中的try/catch

最佳答案

假设check_if_everything_good仅用于开发环境中的调试/诊断目的,则可以执行以下操作:

#ifndef NDEBUG
#define check_if_everything_good() do_check_if_everything_good()
#else
#define check_if_everything_good()
#endif

NDEBUG是编译器通常在“release”(或“not a debug”)构建中定义的一个定义,因此我们在这里使用它来“仅当它真正有意义时才这样做”。

关于c - 在C中实现try/catch的有效方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17559770/

10-12 20:13