| Title: | C++ | 
| Notice: | Read 1.* and use keywords (e.g. SHOW KEY/FULL KIT_CXX_VAX_VMS) | 
| Moderator: | DECCXX::AMARTIN | 
| Created: | Fri Nov 06 1987 | 
| Last Modified: | Thu Jun 05 1997 | 
| Last Successful Update: | Fri Jun 06 1997 | 
| Number of topics: | 3604 | 
| Total number of notes: | 18242 | 
    C++ T5.6-6
    Digital UNIX 4.0-B
    
    	While recompiling C++ programs, the below error was generated. The
    	program here after does reproduce it. It appears to be a conflict
    	in the declarations of these functions between exception and
    	cxx_exception.h
    
    	/Michele.
    
    exc.cxx:
    --------
    #include <exception>
    #include <cxx_exception.h>
    
    int i;
    
    The error:
    ----------
    cxx: Error: /usr/include/cxx/cxx_exception.h, line 30: In this declaration,
    the linkage specification of "terminate" differs from that of a previous 
    declaration of "terminate".
    void terminate (void);
    -----^
    
    cxx: Error: /usr/include/cxx/cxx_exception.h, line 31: In this
    declaration, the linkage specification of "set_terminate" differs
    from that of a previous declaration of "set_terminate".
    PFV set_terminate (PFV terminator);
    ----^
    cxx: Error: /usr/include/cxx/cxx_exception.h, line 32: In this
    declaration, the linkage specification of "unexpected" differs fr
    om that of a previous declaration of "unexpected".
    void unexpected (void);
    -----^
    cxx: Error: /usr/include/cxx/cxx_exception.h, line 33: In this
    declaration, the linkage specification of "set_unexpected" differ
    s from that of a previous declaration of "set_unexpected".
    PFV set_unexpected (PFV surprise);
    ----^
    
    
| T.R | Title | User | Personal Name | Date | Lines | 
|---|---|---|---|---|---|
| 3567.1 | DECCXL::OUELLETTE | mudseason into blackfly season | Tue May 13 1997 14:14 | 23 | |
| Hmmm. I can't reproduce this. Perhaps the problem is your headers. With V5.5... cosf> cat /etc/motd | head -1 Digital UNIX V4.0 (Rev. 386); Thu Aug 29 12:01:40 EDT 1996 cosf> cat cxx3567.cxx #include <exception> #include <cxx_exception.h> int i; cosf> !cxx cosf> cxx -V -c cxx3567.cxx cxx (cxx) DEC C++ V5.5-004 on Digital UNIX (Alpha) cosf> cxx -c cxx3567.cxx cosf> $RTS_COMPILER -c cxx3567.cxx -V /usr/proj/decc2/v56_cxx/cxxalphaosf/bl33/exe/deccxx_driver (cxx) DEC CXX T5.6-022 on Digital UNIX (Alpha) cosf> $RTS_COMPILER -c cxx3567.cxx I'd recomend checking your header files against those on the distribution kit for differences. Roland. | |||||
| 3567.2 | I'm working on this | TLE::WHITMAN | Tue May 13 1997 14:30 | 2 | |
|     I can reproduce this with V5.6 Ft2.  It looks like a library
    problem but I'm still investigating what the correct solution is.
 | |||||
| 3567.3 | TLE::WHITMAN | Thu May 15 1997 15:21 | 36 | ||
| hi,
Firstly, I apologize for the delay getting back to you.  The
compilation errors you are getting in a program that includes
<exception> and <cxx_exception.h> are due to terminate(),
set_terminate(), unexpected(), and set_unexpected() being declared
with "C" linkage in <cxx_exception.h> and without "C" linkage in
<exception>.  As it turns out, the library shipped with V5.6 only
includes entry points for terminate(), set_terminate(), unexpected(),
and set_unexpected() with "C" linkage.  Therefore the work-around for
this problem is to edit /usr/include/cxx/exception as follows:
#if defined(__DECCXX)
extern "C" {
#endif
typedef void (*terminate_handler) ();
extern terminate_handler set_terminate(terminate_handler f) _RWSTD_THROW_SPEC_NU
LL;
extern void terminate( );
typedef void (*unexpected_handler) ();
extern unexpected_handler set_unexpected( unexpected_handler f)  _RWSTD_THROW_SP
EC_NULL;
extern void unexpected();
#if defined(__DECCXX)
}
#endif
For the final release of DEC C++ V5.6 we will fix <exception> so that
the functions above are declared with "C" linkage.  We will
investigate providing a more "C++ Standard" solution for these
routines in the library and headers for a future release of DEC C++.
Thanks for reporting this problem to us.
 | |||||