windows - 如何在c99模式下编译?

标签 windows gcc command-line c99

我在 Windows 平台上,有什么方法可以在 c99 模式下在命令行中编译程序,而无需在每个陈述 ?我当前的 gcc 版本是 4.4.1 。

最佳答案

gcc 不提供通过环境变量等方式指定命令行参数的方法。如果您想要 -std=c99 的效果,那么在某种程度上您将必须使用该参数调用 gcc 命令。

如果您从类 Unix 命令 shell(例如与 Cygwin 一起使用的命令 shell)调用 gcc,则可能已经有一个 c99 命令。 POSIX 需要这样的命令(它将是 gcc 命令的包装器)。我目前没有安装 Cygwin,所以无法检查。如果不存在,您可以定义一个 shell 函数:

c99() {
    gcc -std=c99 "$@"
}

如果您从 Windows MS-DOS 风格的命令提示符调用它,则可以创建一个名为 c99.cmd 的批处理文件,其中包含:

gcc -std=c99 %1 %2 %3 %4 %5 %6 %7 %8 %9

并将其放在 %PATH% 中的某个位置。

请注意,后一种方法最多只能处理 9 个命令行参数,这通常就足够了。 (我认为有办法处理更多。)

如果您想在编译时捕获更多错误,您当然可以添加更多参数,例如 -pedantic -Wall -Wextra

请注意,我将命令命名为 c99 而不是 gcc,这样它就不会尝试递归地调用自身。如果您确实希望能够将其作为 gcc 调用,您可以指定 gcc 可执行文件的完整路径(您必须找出您的文件上的内容)系统)。但这将使调用 gcc 变得更加困难,没有额外的参数。

关于windows - 如何在c99模式下编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18576739/

相关文章:

c# - PInvoke 调用 SendMessageW 时出现 ERROR_PROC_NOT_FOUND

linux - 当我尝试使用 "make"安装某些东西时,为什么我的权限被拒绝?

linux - 如何过滤掉文件中的所有唯一行?

windows - flexbox 在 safari 5.1 窗口中不工作

Windows 10 WebView 和 Adob​​e Flash

windows - 在另一个任务运行后运行一个任务

c++ - SDL(简单媒体直接层)尝试缩放我的 Sprite (角色)

linux - 如何修复错误 : bad value (native) for -march= switch and -mtune= switch?

c++ - STM32 C++ 运算符 new (CoDE)

c - ncurses:窗口颜色不起作用