我遇到了以下情况,我想知道它对我的 Cygwin/GNU 环境有什么影响。我应该使用 -o
以外的东西来命名编译的输出吗?
是否采用了一些新标准,其他编译器是否遵守该标准?
删除 -o
的动机是什么?
DOS 提示符> 输入 compile.bat
cl.exe -D YY_MAIN=1 lex.yy.c libfl.obj -o foobar
DOS PROMPT>编译
cl.exe -D YY_MAIN=1 lex.yy.c libfl.obj -o foobar
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
lex.yy.c
Microsoft (R) Incremental Linker Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.
/out:lex.yy.exe
/out:foobar.exe
lex.yy.obj
libfl.obj
cl:命令行警告 D9035:选项“o”已被弃用,将在未来版本中删除
正如下面的回答所问,他们是否有意在 Windows 和 UNIX 之间造成更大的裂痕?我希望不是。我希望我错过了所有编译器都采用的一些新约定。
最佳答案
是的。你应该使用 /F设置编译器输出选项。
关于c - 为什么 -o 是要从 Microsoft 编译器和链接器中删除的候选对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/719878/