我想在C中实现一个通用的临时重试机制(只重试一组次数),我想寻找与GNUTEMP_FAILURE_RETRY
宏类似的功能。
到目前为止我所拥有的:
#define TEMP_RETRY_COUNT 10
#define TEMP_RETRY( exp ) \
({ \
int _attemptc_ = TEMP_RETRY_COUNT; \
bool _resultb_; \
while ( _attemptc_-- ) \
if ( _resultb_ = exp ) break; \
_resultb_; \
})
工作得很好。我正试图抑制编译器现在发出的警告,并寻找更清晰的内容:
bleh.c: In function ‘main’:
bleh.c:38:3: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
if ( TEMP_RETRY( bleh() ) )
^
bleh.c:46:3: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
TEMP_RETRY( bleh() );
谢谢你的回复!它不必是宏。此外,可以假定
exp
返回布尔值(或等效值)。 最佳答案
愚蠢的我:
#define TEMP_RETRY_COUNT 10
#define TEMP_RETRY( exp ) \
({ \
int _attemptc_ = TEMP_RETRY_COUNT; \
bool _resultb_; \
while ( _attemptc_-- ) \
if ( (_resultb_ = exp) ) break; \
_resultb_; \
})
关于c - C中的通用临时重试宏/功能(TEMP_FAILURE_RETRY),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52102745/