我可以安全地假设所有(或大多数)"cc" 在 *nix 系统上支持“-Wall”吗?

Can I safely assume all (or most) "cc" supports "-Wall" on *nix systems?

我想在Makefile中这样写

foo: foo.c
        $(CC) -o foo -Wall foo.c

但我不确定是否所有 cc 实现都支持 -Wall

不,没有关于 C 编译器命令行界面的标准。

例如,Microsoft 编译器(在 Windows 中)根本不接受以 - 开头的选项,因为这不是 Windows 程序通常使用的语法。

不,您可以做的最接近仅使用便携式选项的事情是将自己限制在 POSIX C89 和 C99 选项上。 -Wall 不是其中之一。有关选项,请参阅 Opengroup's Unix Specification for c99。而且这只给出了 unixy 系统的答案,而不是 Microsoft。

-Wall 是(AFAIK)由 GNU gcc 引入并由 clang 继承以与 GNU gcc.

兼容

如果您不怕研究其他构建工具,有些工具支持多OS 或开箱即用的多工具链构建。我相信 sconscmake 可以做到这一点。