繁体   English   中英

Windows C编译器不会在其运行时库中拆分参数?

[英]A Windows C compiler that doesn't split arguments in its runtime libraries?

我听说在Windows中,参数传递给单个参数,然后程序在运行时库中或有时在实际代码中将其拆分为参数。

我听说大多数C / C ++编译器都是在运行时库中进行的(例如,我下载的TCC- Tiny C Compiler

我可以下载任何C编译器吗? 有链接吗?

在这样的编译器中, argsv[0]是否具有整个字符串?

添加

它基于此人( jdedb )在超级用户问题“似乎无法在Stack Overflow上问了”之后无法管道或重定向Cygwin grep输出中所说的内容。

“如果要以Unix(和C语言)方式运行,则由被调用程序将命令尾部拆分为单词。(对于Win32,大多数C和C ++语言实现的运行时支持库都会在后台进行拆分。 ”

他说是编译器。.但是根据Necrolis ,它不是编译器。 (已添加-Necrolis评论纠正了我的误读,编译器!=运行时库)

如果您使用的是Windows,则只需使用GetCommandLine 这就是大多数CRT包装器从命令行开始拆分的方式。

至于您的实际问题,不是他们使用的是编译器,而是CRT启动包装器。 如果实现mainCRTstartup ,并使用它覆盖入口点,则可以执行任何操作。 它是如何工作的一个很好的例子可以看出这里

“参数拆分”是5.1.2.2.1中C99标准(PDF文件)规定的方式。

如果某个实现(编译器+库+选项)可以识别但不能将程序名称与其他参数(以及彼此之间的参数)分开,则表示不符合要求。

当然,如果您使用独立的实现,则这都不适用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM