Node:Objective-C Dialect Options, Next:Language Independent Options, Previous:C++ Dialect Options, Up:Invoking GCC

### Options Controlling Objective-C Dialect

This section describes the command-line options that are only meaningful for Objective-C programs; but you can also use most of the GNU compiler options regardless of what language your program is in. For example, you might compile a file `some_class.m` like this:

         gcc -g -fgnu-runtime -O -c some_class.m

In this example, only `-fgnu-runtime` is an option meant only for Objective-C programs; you can use the other options with any language supported by GCC.

Here is a list of options that are only for compiling Objective-C programs:

`-fconstant-string-class=`class-name``
  Use class-name as the name of the class to instantiate for each literal string specified with the syntax `@"..."`. The default class name is `NXConstantString`.
`-fgnu-runtime`
  Generate object code compatible with the standard GNU Objective-C runtime. This is the default for most types of systems.
`-fnext-runtime`
  Generate output compatible with the NeXT runtime. This is the default for NeXT-based systems, including Darwin and Mac OS X. The macro `__NEXT_RUNTIME__` is predefined if (and only if) this option is used.
`-gen-decls`
  Dump interface declarations for all classes seen in the source file to a file named ``sourcename`.decl`.
`-Wno-protocol`
  If a class is declared to implement a protocol, a warning is issued for every method in the protocol that is not implemented by the class. The default behavior is to issue a warning for every method not explicitly implemented in the class, even if a method implementation is inherited from the superclass. If you use the `-Wno-protocol` option, then methods inherited from the superclass are considered to be implemented, and no warning is issued for them.
`-Wselector`
  Warn if multiple methods of different types for the same selector are found during compilation. The check is performed on the list of methods in the final stage of compilation. Additionally, a check is performed that for each selector appearing in a `@selector(...)` expression, a corresponding method with that selector has been found during compilation. Because these checks scan the method table only at the end of compilation, these warnings are not produced if the final stage of compilation is not reached, for example because an error is found during compilation, or because the `-fsyntax-only` option is being used.
`-Wundeclared-selector`
  Warn if a `@selector(...)` expression referring to an undeclared selector is found. A selector is considered undeclared if no method with that name has been declared (explicitly, in an `@interface` or `@protocol` declaration, or implicitly, in an `@implementation` section) before the `@selector(...)` expression. This option always performs its checks as soon as a `@selector(...)` expression is found (while `-Wselector` only performs its checks in the final stage of compilation), and so additionally enforces the coding style convention that methods and selectors must be declared before being used.