0

cmark的main.c中的 CLI 在|=迭代参数时使用运算符来组合开/关选项。简化版本如下所示:

#define CMARK_OPT_DEFAULT 0
#define CMARK_OPT_SOURCEPOS 1
#define CMARK_OPT_HARDBREAKS 2
#define CMARK_OPT_NORMALIZE 4
#define CMARK_OPT_SMART 8

int options = CMARK_OPT_DEFAULT;

for (i = 1; i < argc; i++) {
    if (strcmp(argv[i], "--sourcepos") == 0) {
        options |= CMARK_OPT_SOURCEPOS;
    } else if (strcmp(argv[i], "--hardbreaks") == 0) {
        options |= CMARK_OPT_HARDBREAKS;
    } else if (strcmp(argv[i], "--smart") == 0) {
        options |= CMARK_OPT_SMART;
    } else if (strcmp(argv[i], "--normalize") == 0) {
        options |= CMARK_OPT_NORMALIZE;
    } 
    ...
}

使用|=而不是+=添加选项有什么好处?

4

0 回答 0