Dave,

In a word:  Not a good idea.

That define means that the declaration of the offending function is
omitted and you fall back on the default of all undeclared functions
being something returning int, but that suppresses type checking of
the function arguments.

You need to convince the compiler that you are compiling for the level
that includes the code for the function.  4104 seems to be the
operative here.  So a specify the appropriate TARGET parameter to the
compiler.

Then find out why your compiler installation does not default to
TARGET CURRENT as it should and fix that.

  j.

On 1/25/07, Dave Jones <[EMAIL PROTECTED]> wrote:
Thanks to the help and advice of the good folks on this list, I have
managed to solve my C compiler problem. Turns out that I need to do a

#define _NO_NEW_FUNC_CHECK

at the beginning of the code. That tells the C compler (C/C++ for z/VM,
btw) to actually include the correct code to invoked the "getaddrinfo"
function, instead of generating a dummy external structure with the name
of "getaddrinfo". The dummy structure was the actual source of the error
message the C compiler produced.

Unfortunately, the _NO_NEW_FUNC_CHECK directive is not documented
anywhere in either the C or LE manuals, and I don't have a warm fuzzy
feeling about having to use it. Maybe some one from C or LE development
can add to my understanding of why it's there and what it's meant to do...

The good news is that the code now compiles, loads and runs as I expect
it to.

Thanks again, and have a good one.

DJ

William Moy wrote:
> Hi Dave,
>
>       Have you tried c89? I cut and paste your code and compiled with
>       c89 successfully. Here is screenshot.
>
> Best Regards,
> Bill Moy
> ----- Forwarded by William Moy/Endicott/IBM on 01/24/2007 11:08 AM -----
>
>                         *Dave Jones <[EMAIL PROTECTED]>*
>                         Sent by: The IBM z/VM Operating System
>                         <IBMVM@LISTSERV.UARK.EDU>
>
>                         01/23/2007 07:11 PM
>                         Please respond to
>                         The IBM z/VM Operating System
>                         <IBMVM@LISTSERV.UARK.EDU>
>
>
>
> To
>
> IBMVM@LISTSERV.UARK.EDU
>
> cc
>
>
> Subject
>
> a C language question....
>
>
>
>
> I know that this is the z/VM forum, but I have a question about
> compiling a C program on CMS, so I'm hoping someone here might know the
> answer.....
>
> I've written a short C test program that invokes the new "getaddrinfo" C
> library function. However, the z/VM C/C++ compiler complains with the
> following error message when I attempt to compile my test program:
>
>  > #define _OPEN_SYS_SOCK_IPV6
>  > #include <netdb.h>
>  > #include <sys/socket.h>
>  > #include <stdio.h>
>  > #include <errno.h>
>  > #include <stdlib.h>
>  > #include <string.h>
>  >  struct addrinfo hints, *res, *res0;
>  >  int main(int argc, char *argv  ) {
>  >            int error;
>  >            int s;
>  >           char *name = "www.cacert.org";
>  >           char *port = "80";
>  >            const char *cause = NULL;
>  >
>  >            memset(&hints, 0, sizeof(hints));
>  >            hints.ai_family = PF_UNSPEC;
>  >            hints.ai_socktype = SOCK_STREAM;
>  >            error = getaddrinfo(name, port, &hints, &res0);
>  > ...................a..........................................
>  > =====> a - CCN3023 Expecting function or pointer to function.
>
> Can anyone tell me what I'm doing wrong (besides the obvious fact that I
> am reduced to using C as a programming language, which has to be one of
> the worst tools ever devised..the use of C has set back good software
> development by 20 years, imho.)
>
> Thanks for any help and have a good one.
>
> DJ

Reply via email to