• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: warning in main.m
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: warning in main.m


  • Subject: Re: warning in main.m
  • From: Eric Albert <email@hidden>
  • Date: Sun, 4 Jan 2004 01:02:25 -0800

At 8:46 PM -0500 12/30/03, Wayne Hasley wrote:
On 12/30/03 8:24 PM, "matt neuburg" <email@hidden> wrote:

 //  main.m
 #import <Cocoa/Cocoa.h>
 int main(int argc, char *argv[])
 {
   return NSApplicationMain(argc, argv); // warning here!
 }

 The warning reads: "passing arg 2 of `NSApplicationMain' from incompatible
 pointer type".

 What does this mean and how do I make it stop? Why is it happening all of a
 sudden like this? Thx - m.

Are 2 should be a const...

Change it to:
 int main(int argc, const char *argv[])
 {
   return NSApplicationMain(argc, argv); // warning here!
 }

Actually, argument 2 should not be const, and Xcode 1.1 is correct. The ISO C standard specifies that the second argument to main() is a char *[], not a const char *[]. Using a const char *[] by default is not really ideal because it implies an additional restriction on the second argument that the standard doesn't require.


That leads to the second issue, which is the warning. GCC is actually somewhat nice in only warning for this rather than displaying an error. Converting a const char ** to a char ** is illegal in C because the allowed conversion from pointer-to-const-T to pointer-to-T doesn't apply recursively. See <http://www.eskimo.com/~scs/C-faq/q11.10.html> for details.

In other words, either the template should cast or NSApplicationMain should take a char *[] as its second argument, but the change in Xcode's template makes the template more standards-compliant. I'm not on any of the teams that are involved here, but I'd vote for NSApplicationMain being changed for the same reason as changing main.m was the right thing to do. I think we already have a bug report about that. :)

-Eric
_______________________________________________
xcode-users mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/xcode-users
Do not post admin requests to the list. They will be ignored.

  • Follow-Ups:
    • Re: warning in main.m
      • From: Shawn Erickson <email@hidden>
  • Prev by Date: Re: vim keybindings
  • Next by Date: Re: warning in main.m
  • Previous by thread: Re: warning in main.m
  • Next by thread: Re: warning in main.m
  • Index(es):
    • Date
    • Thread