我想在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/

10-14 05:28