Before You Begin

This manual instructs you in the use of the C++ compiler for the Suntrademark Open Network Environment (Sun ONE) Studio 8, Compiler Collection, and provides detailed information on command-line compiler options. This manual is intended for programmers with a working knowledge of C++ and some understanding of the Solaristrademark operating environment and UNIX® commands.


How This Book Is Organized

This manual covers the following topics:

C++ Compiler. Chapter 1 provides introductory material about the compiler, such as standards conformance and new features.Chapter 2 explains how to use the compiler and Chapter 3 discusses how to use the compiler's command line options.

Writing C++ Programs. Chapter 4 discusses how to compile nonstandard code that is commonly accepted by other C++ compilers. Chapter 5 makes suggestions for setting up and organizing header files and template definitions. Chapter 6 discusses how to create and use templates and Chapter 7 explains various options for compiling templates. Exception handling is discussed in Chapter 8 and information about cast operations is provided in Chapter 9. Chapter 10 discusses performance techniques that strongly affect the C++ compiler. Chapter 11 provides information about building multithreaded programs.

Libraries. Chapter 12 explains how to use the libraries that are provided with the compiler. The C++ standard library is discussed in Chapter 13, the classic iostream library (for compatibility mode) is discussed in Chapter 14, and the complex arithmetic library (for compatibility mode) is discussed in Chapter 15. Chapter 16 provides information about building libraries.

Compiler Options. Appendix A provides in-depth information about the compiler options.


Typographic Conventions

TABLE P-1 Typeface Conventions

Typeface

Meaning

Examples

AaBbCc123

The names of commands, files, and directories; on-screen computer output

Edit your .login file.

Use ls -a to list all files.

% You have mail.

AaBbCc123

What you type, when contrasted with on-screen computer output

% su

Password:

AaBbCc123

Book titles, new words or terms, words to be emphasized

Read Chapter 6 in the User's Guide.

These are called class options.

You must be superuser to do this.

AaBbCc123

Command-line placeholder text; replace with a real name or value

To delete a file, type rm filename.


TABLE P-2 Code Conventions

Code Symbol

Meaning

Notation

Code Example

[ ]

Brackets contain arguments that are optional.

O[n]

O4, O

{ }

Braces contain a set of choices for a required option.

d{y|n}

dy

|

The "pipe" or "bar" symbol separates arguments, only one of which may be chosen.

B{dynamic|static}

Bstatic

:

The colon, like the comma, is sometimes used to separate arguments.

Rdir[:dir]

R/local/libs:/U/a

...

The ellipsis indicates omission in a series.

xinline=f1[,...fn]

xinline=alpha,dos



Shell Prompts

Shell

Prompt

C shell

machine-name%

C shell superuser

machine-name#

Bourne shell and Korn shell

$

Superuser for Bourne shell and Korn shell

#



Accessing Compiler Collection Tools and Man Pages

The compiler collection components and man pages are not installed into the standard /usr/bin/ and /usr/share/man directories. To access the compilers and tools, you must have the compiler collection component directory in your PATH environment variable. To access the man pages, you must have the compiler collection man page directory in your MANPATH environment variable.

For more information about the PATH variable, see the csh(1), sh(1), and ksh(1) man pages. For more information about the MANPATH variable, see the man(1) man page. For more information about setting your PATH variable and MANPATH variables to access this release, see the installation guide or your system administrator.



Note - The information in this section assumes that your Sun ONE Studio compiler collection components are installed in the /opt directory. If your software is not installed in the /opt directory, ask your system administrator for the equivalent path on your system.



Accessing the Compilers and Tools

Use the steps below to determine whether you need to change your PATH variable to access the compilers and tools.


procedure icon  To Determine Whether You Need to Set Your PATH Environment Variable

1. Display the current value of the PATH variable by typing the following at a command prompt.

% echo $PATH

2. Review the output to find a string of paths that contain /opt/SUNWspro/bin/.

If you find the path, your PATH variable is already set to access the compilers and tools. If you do not find the path, set your PATH environment variable by following the instructions in the next procedure.


procedure icon  To Set Your PATH Environment Variable to Enable Access to the Compilers and Tools

1. If you are using the C shell, edit your home .cshrc file. If you are using the Bourne shell or Korn shell, edit your home .profile file.

2. Add the following to your PATH environment variable.

/opt/SUNWspro/bin

Accessing the Man Pages

Use the following steps to determine whether you need to change your MANPATH variable to access the man pages.


procedure icon  To Determine Whether You Need to Set Your MANPATH Environment Variable

1. Request the dbx man page by typing the following at a command prompt.

% man dbx

2. Review the output, if any.

If the dbx(1) man page cannot be found or if the man page displayed is not for the current version of the software installed, follow the instructions in the next procedure for setting your MANPATH environment variable.


procedure icon  To Set Your MANPATH Environment Variable to Enable Access to the Man Pages

1. If you are using the C shell, edit your home .cshrc file. If you are using the Bourne shell or Korn shell, edit your home .profile file.

2. Add the following to your MANPATH environment variable.

/opt/SUNWspro/man


Accessing Compiler Collection Documentation

You can access the documentation at the following locations:

  • The documentation is available from the documentation index that is installed with the software on your local system or network at file:/opt/SUNWspro/docs/index.html.
If your software is not installed in the /opt directory, ask your system administrator for the equivalent path on your system.
  • Most manuals are available from the docs.sun.comsm web site. The following titles are available through your installed software only:
    • Standard C++ Library Class Reference
    • Standard C++ Library User's Guide
    • Tools.h++ Class Library Reference
    • Tools.h++ User's Guide
  • The release notes are available from the docs.sun.com web site.

The docs.sun.com web site (http://docs.sun.com) enables you to read, print, and buy Sun Microsystems manuals through the Internet. If you cannot find a manual, see the documentation index that is installed with the software on your local system or network.



Note - Sun is not responsible for the availability of third-party web sites mentioned in this document and does not endorse and is not responsible or liable for any content, advertising, products, or other materials on or available from such sites or resources. Sun will not be responsible or liable for any damage or loss caused or alleged to be caused by or in connection with use of or reliance on any such content, goods, or services available on or through any such sites or resources.



Documentation in Accessible Formats

The documentation is provided in accessible formats that are readable by assistive technologies for users with disabilities. You can find accessible versions of documentation as described in the following table. If your software is not installed in the /opt directory, ask your system administrator for the equivalent path on your system.

Type of Documentation

Format and Location of Accessible Version

Manuals (except third-party manuals)

HTML at http://docs.sun.com

Third-party manuals:

  • Standard C++ Library Class Reference
  • Standard C++ Library User's Guide
  • Tools.h++ Class Library Reference
  • Tools.h++ User's Guide

HTML in the installed software through the documentation index at file:/opt/SUNWspro/docs/index.html

Readmes and man pages

HTML in the installed software through the documentation index at file:/opt/SUNWspro/docs/index.html

Release notes

HTML at http://docs.sun.com


Related Compiler Collection Documentation

The following table describes related documentation that is available at file:/opt/SUNWspro/docs/index.html and http://docs.sun.com. If your software is not installed in the /opt directory, ask your system administrator for the equivalent path on your system.

Document Title

Description

Numerical Computation Guide

Describes issues regarding the numerical accuracy of floating-point computations.



Accessing Related Solaris Documentation

The following table describes related documentation that is available through the docs.sun.com web site.

Document Collection

Document Title

Description

Solaris Reference Manual Collection

See the titles of man page sections.

Provides information about the Solaris operating environment.

Solaris Software Developer Collection

Linker and Libraries Guide

Describes the operations of the Solaris link-editor and runtime linker.

Solaris Software Developer Collection

Multithreaded Programming Guide

Covers the POSIX and Solaris threads APIs, programming with synchronization objects, compiling multithreaded programs, and finding tools for multithreaded programs.



Accessing C++ Related Man Pages

This manual provides lists of the man pages that are available for the C++ libraries. The following table lists other man pages that are related to C++.

Title

Description

c++filt

Copies each file name in sequence and writes it in the standard output after decoding symbols that look like C++ demangled names

dem

Demangles one or more C++ names that you specify

fbe

Creates object files from assembly language source files

fpversion

Prints information about the system CPU and FPU

gprof

Produces execution profile of a program

ild

Links incrementally, allowing insertion of modified object code into a previously built executable

inline

Expands assembler inline procedure calls

lex

Generates lexical analysis programs

rpcgen

Generates C/C++ code to implement an RPC protocol

sigfpe

Allows signal handling for specific SIGFPE codes

stdarg

Handles variable argument list

varargs

Handles variable argument list

version

Displays version identification of object file or binary

yacc

Converts a context-free grammar into a set of tables for a simple automaton that executes an LALR(1) parsing algorithm



Commercially Available Books

The following is a partial list of available books on the C++ language.

The C++ Programming Language 3rd edition, Bjarne Stroustrup (Addison-Wesley, 1997).

The C++ Standard Library, Nicolai Josuttis (Addison-Wesley, 1999).

Generic Programming and the STL, Matthew Austern (Addison-Wesley, 1999).

Standard C++ IOStreams and Locales, Angelika Langer and Klaus Kreft (Addison-Wesley, 2000).

Thinking in C++, Volume 1, Second Edition, Bruce Eckel (Prentice Hall, 2000).

The Annotated C++ Reference Manual, Margaret A. Ellis and Bjarne Stroustrup, (Addison-Wesley, 1990).

Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides (Addison-Wesley, 1995).

C++ Primer, Third Edition, Stanley B. Lippman and Josee Lajoie (Addison-Wesley, 1998).

Effective C++--50 Ways to Improve Your Programs and Designs, Second Edition, Scott Meyers (Addison-Wesley, 1998).

More Effective C++--35 Ways to Improve Your Programs and Designs, Scott Meyers (Addison-Wesley, 1996).


Resources for Developers

Visit http://www.sun.com/developers/studio and click the Compiler Collection link to find these frequently updated resources:

  • Articles on programming techniques and best practices
  • A knowledge base of short programming tips
  • Documentation of compiler collection components, as well as corrections to the documentation that is installed with your software
  • Information on support levels
  • User forums
  • Downloadable code samples
  • New technology previews

You can find additional resources for developers at http://www.sun.com/developers/.


Contacting Sun Technical Support

If you have technical questions about this product that are not answered in this document, go to:

http://www.sun.com/service/contacting


Sun Welcomes Your Comments

Sun is interested in improving its documentation and welcomes your comments and suggestions. Email your comments to Sun at this address:

docfeedback@sun.com

Please include the part number (817-0926-10) of the document in the subject line of your email.