16.12.2012 Views

z/OS V1R9.0 UNIX System Services Command ... - Christian Grothoff

z/OS V1R9.0 UNIX System Services Command ... - Christian Grothoff

z/OS V1R9.0 UNIX System Services Command ... - Christian Grothoff

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

c89, cc, and c++<br />

escaped. For example, some -W option-arguments contain parentheses.<br />

Source files specified as PDS member names contain parentheses; if they are<br />

specified as fully qualified names, they contain single quotes.<br />

To escape these special characters, either enclose the option-argument or<br />

operand in double quotes, or precede each character with a backslash.<br />

3. Some c89/cc/c++ behavior applies only to hierarchical files (and not to data<br />

sets).<br />

v If the compile or assemble is not successful, the corresponding object file<br />

(file.o) is always removed.<br />

v If the DLL option is passed to the link-editing phase, and afterwards the<br />

file.x file exists but has a size of zero, then that file is removed.<br />

4. MVS data sets may be used as the usual place to resolve C and C++<br />

#include directives during compilation.<br />

Such data sets are installed with Language Environment. When it is allocated,<br />

searching for these include files can be specified on the -I option as<br />

//DD:SYSLIB. (See the description of environment variable prefix_CSYSLIB for<br />

information.<br />

When include files are MVS PDS members, z/<strong>OS</strong> XL C/C++ uses conversion<br />

rules to transform the include (header) file name on a #include preprocessor<br />

directive into a member name. If the "//'dataset_prefix.+'" syntax is not used for<br />

the MVS data set which is being searched for the include file, then this<br />

transformation strips any directory name on the #include directive, and then<br />

takes the first 8 or fewer characters up to the first dot (.).<br />

If the "//'dataset_prefix.+'" syntax is used for the MVS data set which is being<br />

searched for the include file, then this transformation uses any directory name<br />

on the #include directive, and the characters following the first dot (.), and<br />

substitutes the "+" of the data set being searched with these qualifiers.<br />

In both cases the data set name and member name are converted to<br />

uppercase and underscores (_) are changed to at signs (@).<br />

If the include (header) files provided by Language Environment are installed<br />

into the hierarchical file system in the default location (in accordance with the<br />

prefix_INCDIRS environment variable), then the compiler will use those files to<br />

resolve #include directives during compilation. c89/cc/c++ by default searches<br />

the directory /usr/include as the usual place, just before searching the data<br />

sets just described. See the description of environment variables<br />

prefix_CSYSLIB, prefix_INCDIRS, and prefix_INCLIBS for information on<br />

customizing the default directories to search.<br />

5. Feature test macros control which symbols are made visible in a source file<br />

(typically a header file). c89/cc/c++ automatically defines the following feature<br />

test macros along with the errno macro, according to whether or not cc was<br />

invoked.<br />

v Other than cc<br />

–D "errno=(*__errno())"<br />

–D _OPEN_DEFAULT=1<br />

98 z/<strong>OS</strong> <strong>V1R9.0</strong> <strong>UNIX</strong> <strong>System</strong> <strong>Services</strong> <strong>Command</strong> Reference<br />

v cc<br />

–D "errno=(*__errno())"<br />

–D _OPEN_DEFAULT=0<br />

–D _NO_PROTO=1<br />

c89/cc/c++ add these macro definitions only after processing the command<br />

string. Therefore, you can override these macros by specifying -D or -U<br />

options for them on the command string.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!