Thanks for those references. That makes sense.

On Sun, Jul 21, 2024 at 8:04 PM Gregory Nutt <spudan...@gmail.com> wrote:

>
> >
> > On 7/21/2024 5:47 PM, Gregory Nutt wrote:
> >>
> >> On 7/21/2024 5:38 PM, Nathan Hartman wrote:
> >>> Hi Alan,
> >>>
> >>> I think we should have "int main(int argc, const char * argv[])" (added
> >>> 'const' for argv). Maybe should grep for all instances of main in
> >>> our code
> >>> and docs and add const? I'm willing to do that.
> >>>
> >>> Let me know,
> >>> Nathan
> >>
> >> POSIX specifies the required prototype of main at
> >> https://pubs.opengroup.org/onlinepubs/007904975/functions/exec.html
> >> Yes, main() is specified in exec() and other locations refer to the
> >> exec() page for the specification of main().
> >>
> >> POSIX does specify the prototype from the standpoint of the OS call
> >> into the application.  Applications may, of course, use any form that
> >> they like but the OS must conform to this standard.
> >
> > Also interesting:
> >
> https://stackoverflow.com/questions/5808679/why-is-main-argument-argv-of-type-char-rather-than-const-char
> > That reference explains where argv must not be const.  Basically, it
> > is not const because it should be modifiable.
> >
> > Not as good, but to the same point:
> > https://stackoverflow.com/questions/20558418/why-is-argc-not-a-constant
> With at least some compilers you will be an error if argv is const
> becuase of pointer mismatch.  This is expected POSIX-compliant behavior:
>
> https://cboard.cprogramming.com/c-programming/173878-making-const-char-*-out-argv.html
> >
> >
> >>
> >>
>

Reply via email to