有没有办法让gcc或clang警告明确的演员阵容?

Chr*_*ris 6 c compiler-construction gcc clang

我正在尝试做的是从我有的一些源文件中找到所有类型为double或float的显式转换为任何其他类型.有没有内置的gcc方法来做到这一点?语言是C.谢谢!

Ric*_*ith 7

如果您的C代码也可以在C++模式下编译,您可以使用g ++的-Wold-style-cast警告标志来触发所有此类强制转换的警告.

您可以确定Clang是否有任何警告会通过使用其-Weverything开关来触发特定的编码模式(但请注意,这对于几乎任何其他目的都没有用处 - clang已经禁用了默认警告,触发了各种形式的合法码).但是,在这种情况下,clang没有任何触发此类演员的警告.


Dav*_*ave 2

由于强制转换是明确合法的,并且是执行奇怪转换的正确方法,因此 gcc 不太可能包含警告它们的选项

相反,根据您的来源有多大,您可能能够逃脱:

grep '\(double|float\) ' *
Run Code Online (Sandbox Code Playgroud)

为您提供所有双精度或浮点变量。由于 c 不是常规语言,因此将其解析为 double 或 float 变量列表并不简单(使用 shell 工具),但如果您的源代码足够小,则手动执行此操作很容易。

grep '([^()]*)[ ()]*\(your list of variable names\)' *
Run Code Online (Sandbox Code Playgroud)

从那里会向您展示许多演员阵容。