RELEASE NOTES FOR VAX C V2.3
These notes contain information on the following aspects of VAX C
V2.3:
o Functional Enhancements
o Restrictions
o Documentation Errata
o VAX C Run-Time Library Functions
VAX C V2.3 contains several bug fixes and SPR fixes. Details of
changes made as a result of SPRs can be found in the file
SYS$LIBRARY:VAXCSPR.DAT.
Note that the VAX C Run-Time Library (RTL) is no longer distributed
with VAX C. It is now being distributed with the VMS Run-Time
Library. In addition, as of VMS V4.4, RTL object libraries are no
longer shipped with MicroVMS. Therefore, you are required to use the
VAX C shareable libraries. If you are linking a C program on a
MicroVAX system and you are not using the G-float option, enter the
following command:
$ LINK prog-name, SYS$INPUT: /OPTIONS
SYS$SHARE:VAXCRTL.EXE/SHARE
CTRL/Z
If you are using the G-float option, use the following command:
$ LINK prog-name, SYS$INPUT: /OPTIONS
SYS$SHARE:VAXCRTLG.EXE/SHARE
CTRL/Z
FUNCTIONAL ENHANCEMENTS
The following list documents the functional enhancements provided with
VAX C V2.3. All chapters and appendixes referenced in this list are
contained in the Guide to VAX C.
o VAX C allows you to generate static analysis data files for
VAXSCA. The /ANALYSIS_DATA qualifier will signal the
compiler to produce the data file. For more information, see
Chapter 1, Developing VAX C Programs at DCL Command Level.
o VAX C allows you to use function prototypes in function
declarations. By using prototypes, you specify the number
and the data type of the arguments in a function declaration.
The compiler checks the argument specifications in the
prototype, and provides error checking and necessary data
type conversions. For more information, refer to Chapter 3,
Program Structure.
Page 2
o VAX C supports the volatile and const data type specifiers.
For more information, refer to Chapter 6, Data Types and
Declarations.
o VAX C supports variant structure and union declarations
nested within structure or union declarations. For more
information, refer to Chapter 6, Data Types and Declarations.
o VAX C provides a way for you to align data on byte, word,
longword, quadword, octaword, or page boundaries. For more
information, refer to Chapter 7, Storage Classes and
Allocation.
o VAX C supports the #elif and #pragma preprocessor directives.
For more information, refer to Chapter 8, Preprocessor
Directives.
o VAX C includes the predefined macros __DATE__, __FILE__,
__LINE__, and __TIME__. For more information, refer to
Chapter 8, Preprocessor Directives.
o VAX C provides several new diagnostic messages. For more
information, refer to Appendix C, VAX C Compiler Messages.
RESTRICTIONS
The following list represents some restrictions of VAX C V2.3:
o You cannot link modules created by the VAX C V1.n compilers
with modules created by the VAX C V2.n compilers. You must
recompile your code.
o You should avoid using the underscore as the first character
in program identifiers since VAX C uses the underscore to
identify implementation-specific macros and keywords. For
more information, refer to Chapter 3, Program Structure.
o The V2.3 compiler provides new debugger support to examine
split-lifetime variables. Split-lifetime variables are
allocated to different registers over the course of program
execution or are eliminated by value propagation. In some
instances, a system prior to VMS V4.6 will generate the
following error message:
%DEBUG-E-INTERR, internal DEBUG error in
RSTCNTRL\MERGE_CONTINUATION_DST
To avoid this error, compile the affected module with
/OPTIMIZE=NODISJOINT.
DOCUMENTATION ERRATA
VAX C now allows you to specify the data type void with pointers.
Page 3
This is not indicated in the documentation on pointers.
The following .H files are not described in the documentation but are
available in this release of VAX C.
o ASSERT.H -- Defines the assert macro.
o PROCESSES.H -- Defines subprocess functions.
o SHRDEF.H -- Defines system message code definitions of shared
messages.
o SMGMSG.H -- Defines the return status code of SMG. Note that
this definition module is also included in SMGDEF.H.
o STDARG.H -- Defines access to variable-length argument lists.
o STDDEF.H -- Defines commonly used macros.
o STDLIB.H -- Defines standard types and macros.
o STRING.H -- Defines string functions.
o UNIXIO.H -- Defines UNIX emulation functions.
VAX C RUN-TIME LIBRARY FUNCTIONS
The following VAX C Run-Time Library functions are available with V4.6
of VMS. For more information on each of these functions, see the VAX
C Run-Time Library Reference Manual.
Functions in both the System V Interface Definition and the Proposed
ANSI C Language Standard
o The asctime function, which converts the broken-down time
passed in a predefined structure form into a string.
o The assert function, which verifies a program assertion.
o The bsearch function, which performs a binary search on a
sorted table.
o The clock function, which determines the amount of CPU time
used.
o The gmtime function, which converts calendar time into a
broken-down time relative to GMT (Greenwich Mean Time). This
function exists but includes no functionality.
o The memchr, memcmp, memcpy, memmove, and memset functions
which perform operations on areas of memory.
Page 4
o The qsort function, which performs a rapid sort.
o The setvbuf function, which allows you to specify the type of
buffers to be used on a FILE.
o The strtod, strtol, and strtoul functions which allow you to
manipulate strings. Specifically, the strtod function allows
you to convert a string to a double-precision number, and the
strtol and strtoul functions allow you to convert a string to
an integer or unsigned integer, respectively.
o The strtok function, which extracts a token from a string by
using a specified set of token delimiters.
o The system function, which passes a command string to be
executed by the command processor.
o The vprintf, vfprintf, and vsprintf functions, which perform
formatted output comparable to the printf, fprintf, and
sprintf functions.
Functions Defined in the System V Interface Definition
o The execlp and execvp functions, which pass the name of an
image to be activated in a child process.
o The getcwd function, which returns the current working
directory.
o The getppid function, which returns the parent process ID of
the calling process.
Functions Defined in the Proposed ANSI C Language Standard
o The atexit function, which establishes an action function to
be called at program termination time.
o The difftime function, which computes the difference between
two calendar times.
o The div and ldiv functions, which return the quotient and
remainder after the division of their arguments.
o The fgetpos function, which returns the current file
position. For information on this function, see the HELP
file.
o The fmod function, which computes the floating-point
remainder of x/y.
o The fsetpos function, which sets the current file position.
For information on this function, see the HELP file.
Page 5
o The remove function, which deletes a closed file. This
function is equivalent to the delete function.
o The rename function, which renames a closed file.
o The strerror function, which returns a C RTL error message
string corresponding to a C RTL error code.
Enhancements to Existing Functionality
o The fopen and freopen functions can now be used to open
binary files when the access mode contains a 'b' character.
The 'b' character cannot appear in the first character
position of the access mode string.
o The printf and scanf functions now perform formatted output
and input respectively with the addition of three new format
flags (#, +, space) and the following new format specifiers:
i, p, and n.
o The ungetc function guarantees one character of push back at
all times. This function is only valid on stream files. Two
calls to the ungetc function with no intervening I/O is no
longer supported.