0

我有这个c文件

#include "pointer.h"
int switcher(int * i) {
 int a = *i;
    switch (a) {
        case 1: 
            return 0;
        default: 
            return 1;
    }
}  

并且相关的标题只包含一行

int switcher(int * i);

这使用 clang 编译。

如果我现在使用 clang-tidy (clang-tidy -fix pointer.c -checks=* -header-filter=.* ) 我得到以下结果

#include "pointer.h"
int switcher(const int * i) {
    int a = *i;
    switch (a) {
        case 1: 
            return 0;
        default: 
            return 1;
    }
}

和标题

#ifndef _HOME_GWE_PROJEKTE_CLANG_TIDY_POINTER_H
#define _HOME_GWE_PROJEKTE_CLANG_TIDY_POINTER_H

int switcher(int * i);

#endif

函数的签名已从 (int i) 更改为 (const int i),这很好。头文件也已更改(保护),但签名保持不变。因此。代码不再编译。

我的 compile_commands.json 看起来像这样

[
{
  "directory": "/home/gwe/projekte/clang/tidy",
  "command": "clang -c pointer.c -I.",
  "file": "pointer.c"
}
]

这是一个整洁的错误还是我做错了?谢谢你的帮助?

最好的问候,乔治

4

1 回答 1

1

将此错误报告给 llvm.org。

bugs.llvm.org//show_bug.cgi?id=33219

于 2017-09-12T07:50:56.763 回答