向空函数声明添加 void 参数的语义补丁

问题描述 投票:0回答:1

拥有一个充满不带参数的函数的代码库,省略

void
参数,当我尝试启用
-Wextra
时,该参数会产生大约 500 个警告。

我想为例如编写一个语义补丁将

int fn()
等签名转换为
int fn(void)

但这显然应该排除对

fn
的调用,即
fn();
不应成为
fn(void)

我尝试过的一切似乎要么出错,要么根本没有改变任何东西。

c coccinelle
1个回答
0
投票

以下语义补丁将起作用

@@
type T;
identifier fn;
@@
  T
- fn()
+ fn(void)
  { ... }

应用于此代码时:

int baz() { return 3; }

int main() {
  int var = baz();

  return baz();
}

产生这个结果:

$ spatch --sp-file add_void.cocci code/func-example.c
init_defs_builtins: /usr/lib/coccinelle/standard.h
HANDLING: code/func-example.c
diff = 
--- code/func-example.c
+++ /tmp/cocci-output-182962-142650-func-example.c
@@ -1,6 +1,6 @@
-int baz() { return 3; }
+int baz(void) { return 3; }

-int main() {
+int main(void) {
   int var = baz();

   baz();
© www.soinside.com 2019 - 2024. All rights reserved.