[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference turris::digital_unix

Title:DIGITAL UNIX(FORMERLY KNOWN AS DEC OSF/1)
Notice:Welcome to the Digital UNIX Conference
Moderator:SMURF::DENHAM
Created:Thu Mar 16 1995
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:10068
Total number of notes:35879

9201.0. "uswitch() prototype missing from uswitch.h header" by DECC::J_WARD () Mon Mar 17 1997 09:58

In C_PLUS_PLUS note 3495, Ian Chamberlin reports that the
uswitch() prototype is missing from the sys/uswitch.h header,
causing C++ users to have to declare their own.

Here is the note:

        <<< TURRIS::DISK$NOTES_PACK:[NOTES$LIBRARY]C_PLUS_PLUS.NOTE;2 >>>
                                    -< C++ >-
================================================================================
Note 3495.0   uswitch() function appears to nave no c++ prototype.       1 reply
RDGENG::CHAMBERLIN "Danger! Do not Reverse Polarity"  51 lines  17-MAR-1997 06:17
--------------------------------------------------------------------------------
The uswitch () function example given in the man page doesn't compile under c++
(DEC C++ V5.5-004, Digital Unix 44.0A). The  normal C compiler accepts it OK.

watfor> cat uswitch.cc
#include <stdio.h>
#include <sys/types.h>
#include <sys/uswitch.h>
#include <string.h>


main()
{
    size_t  retval;
    long     uswitch_val;

    uswitch_val = uswitch(USC_GET,0);
    printf ("uswitch_val: %x\n", uswitch_val);
    uswitch(USC_SET, uswitch_val | USW_NULLP);
    uswitch_val = uswitch(USC_GET,0);
    printf ("uswitch_val: %x\n", uswitch_val);
    retval = strlen(NULL);
    printf ("retval: %x\n", retval);
}

 

watfor> cxx -o usw usw.cc  
cxx: Error: usw.cc, line 12: In this statement, "uswitch" is not declared.
    uswitch_val = uswitch(USC_GET,0);
------------------^
cxx: Error: usw.cc, line 14: In this statement, "uswitch" is not declared.
    uswitch(USC_SET, uswitch_val | USW_NULLP);
----^
cxx: Error: usw.cc, line 15: In this statement, "uswitch" is not declared.
    uswitch_val = uswitch(USC_GET,0);
------------------^

If I include an external declaration of uswitch after the #includes.....


extern "C"
long uswitch(long, long);

Then it compiles and runs OK.

Not sure if this as this a c++ problem, a Unix problem or am I missing something?

Thanks,
	Ian Chamberlin,
	
	Software Partner Eng.
T.RTitleUserPersonal
Name
DateLines
9201.1QAR it!DECC::SULLIVANJeff SullivanMon Mar 17 1997 11:4932
Thsi should be reported as an OSF_QAR.
The problem still exists in Steel BL8.

%  cc t.c -w0
cc: Info: t.c, line 12: In this statement, the identifier "uswitch" is
implicitly declared as a function.
    uswitch_val = uswitch(USC_GET,0);
------------------^

% cat t.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/uswitch.h>
#include <string.h>


main()
{
    size_t  retval;
    long     uswitch_val;

    uswitch_val = uswitch(USC_GET,0);
    printf ("uswitch_val: %x\n", uswitch_val);
    uswitch(USC_SET, uswitch_val | USW_NULLP);
    uswitch_val = uswitch(USC_GET,0);
    printf ("uswitch_val: %x\n", uswitch_val);
    retval = strlen(NULL);
    printf ("retval: %x\n", retval);
}


-Jeff
9201.2QAR 52043 in OSF_QARRDGENG::CHAMBERLINDanger! Do not Reverse PolarityTue Mar 18 1997 04:400