I have heard that in Windows, parameters are passed a single parameter, and then the program splits it into arguments, either in its runtime libraries, or sometimes, in the actual code.
I’ve heard that most C/C++ compilers do it in runtime libararies (for example, TCC – Tiny C Compiler, which I downloaded)
Are there any C compilers I can download, that don’t? Any links to them?
And in such a compiler, would argsv[0] have the whole string?
Added
It’s based on what this person (jdedb) said in Super User question Can’t pipe or redirect Cygwin grep output, after seeming to suggest that I ask on Stack Overflow.
“It’s up to the called program to split the command tail into words, if it wants to operate in Unix (and C language) fashion. (The runtime support libraries of most C and C++ language implementations for Win32 do this splitting behind the scenes.”
He said it’s the compilers.. But according to Necrolis, it’s not the compiler.
(added- Necrolis commented correcting my misreading, compiler!=runtime library)
If you are on Windows, just use
GetCommandLine. This is how most CRT wrappers get the command line to split to start with.As for your actual question, it’s not the compiler, but the CRT startup wrapper that they use. If you implement
mainCRTstartup, and override the entrypoint with it, you can do whatever you want. A good example of how it works can be seen here.