United States    
COMPAQ STORE | PRODUCTS |
SERVICES | SUPPORT | CONTACT US | SEARCH
Compaq C V6.4 for OpenVMS VAX Release Notes

Compaq C V6.4 for OpenVMS VAX Release Notes


Previous Contents

7.20 Problems fixed in DEC C V5.2

This kit contains the following bug fixes beyond those contained in DEC C V5.0-003:


7.21 Problems fixed in DEC C V5.0

7.22 Problems Fixed in V4.0-01

  1. DEC C now recognizes comment terminators which span multiple lines through the use of backslash, newline line continuation.


    /* comment *\
    / 
    

  2. The DEC C kit now installs properly on OpenVMS VAX V5.5-2.
  3. The DEC C kit now supplies the correct header files on systems on which DEC C++ V1.2 was previously installed.
  4. The DEC C kit now ships CMA$DEF.H. Previous kits generated CMA$DEF.H from SYS$LIBRARY:STARLETSD.TLB, and the generated version was not correct.
  5. If DEC C encounters a bad multibyte character in a compilation source, it attempts to skip past the character and continue compilation.
  6. In addition to #pragma inline <function name> , you can suggest inlining of a function with __inline . Below, both func1 and func2 are candidates for inlining:


    __inline void func1(void} {} 
    void func2 (void) {} 
    #pragma inline func2 
    

  7. Functions declared volatile or const via a typedef:


    typedef int (F)(); 
    const volatile F abs; 
    
    now produce a CONSTFUNC or VOLATILEFUNC diagnostic.

  8. Redundant type specifiers (e.g. int int x; ) now produce warning diagnostics, not error diagnostics. Warning diagnostics may be suppressed with /WARNING=DISABLE; error diagnostics may not be suppressed.
  9. Similarly, improper use of register variables, such as:


    register int x; 
    int *p = &x; 
    
    produces a warning diagnostic, not an error diagnostic.

  10. The redundant use of a type qualifier of a pointer (e.g. int * const const p; ) produces a warning diagnostic.
  11. #include "'file.h'" no longer crashes the compiler.
  12. DEC C supports C++ style comments in all modes except /STANDARD=ANSI89. DEC C cannot support C++ style comments in this mode because they are not allowed by the C standard.
  13. DEC C for OpenVMS VAX supports the /NESTED_INCLUDE_DIRECTORY command line qualifier. The default behavior is /NESTED_INCLUDE_DIRECTORY=INCLUDE_FILE. This matches the behavior of VAX C. See the DEC C User's Guide for OpenVMS Systems for more information about this qualifier.
  14. #pragma __nostandard and #pragma __standard work correctly. In some cases, the pair of pragmas were not suppressing some messages that should have been suppressed, and leaving other messages suppressed that should not have been suppressed.
  15. Most of the header files supplied with this kit or created during installation compile with no diagnostics in all modes of the compiler and with all diagnostics enabled. Some exceptions are:
  16. The DEC C kit contains the header file, builtins.h.
  17. DEC C no longer requires definitions for unreferenced declared objects. The following program no longer produces the linker diagnostic %LINK-W-UNDFSYMS:


    extern int x; 
    #include <stdio.h> 
    int main(void) { 
            printf("Hello world\n"); 
    } 
    

  18. DEC C no longer inlines functions that use va_start.
  19. In the /STANDARD=VAXC, /STANDARD=RELAXED_ANSI89, and /STANDARD=COMMON modes of the compiler, a redeclaration of a function with an empty argument list is now compatible with previous declarations containing an ellipse. The following function declarations are now compatible:


    int x(int first, ...); 
    int x(); 
    
    As required by the C Standard, DEC C does gives a FUNCREDECL diagnostic for this in the /STANDARD=ANSI89 mode of the compiler. DEC C also gives this diagnostic when you specify /WARNING=ENABLE=PORTABLE since such redeclarations are not compatible in all implementations of C.

  20. Passing a pointer to an array of pointers to const chars to a function expecting a pointer to a pointer to an array of pointers to non-const chars now results in the following diagnostic:


    static void f(char *argv[]) {} 
    static void g(const char *argv[]) 
    { 
        f(argv); 
    %CC-W-PTRMISMATCH, (1) In this statement, the referenced 
     type of the pointer value "argv" is "pointer to const 
     char", which is not compatible with "pointer to char". 
    } 
    

  21. DEC C supports the __int32 and __int16 datatypes.

7.23 Restrictions and known bugs

This is a list of some known compiler restrictions and bugs.