拥有一个充满不带参数的函数的代码库,省略
void
参数,当我尝试启用 -Wextra
时,该参数会产生大约 500 个警告。
我想为例如编写一个语义补丁将
int fn()
等签名转换为 int fn(void)
。
但这显然应该排除对
fn
的调用,即 fn();
不应成为 fn(void)
。
我尝试过的一切似乎要么出错,要么根本没有改变任何东西。
以下语义补丁将起作用
@@
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();