From: "Edd Dawson" Newsgroups: comp.os.msdos.djgpp Subject: stdarg.h problem(s)? Lines: 64 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Message-ID: <%kET9.17088$q67.14211@news-binary.blueyonder.co.uk> Date: Fri, 10 Jan 2003 18:36:48 -0000 NNTP-Posting-Host: 80.192.26.95 X-Complaints-To: abuse AT blueyonder DOT co DOT uk X-Trace: news-binary.blueyonder.co.uk 1042223547 80.192.26.95 (Fri, 10 Jan 2003 18:32:27 GMT) NNTP-Posting-Date: Fri, 10 Jan 2003 18:32:27 GMT Organization: blueyonder (post doesn't reflect views of blueyonder) To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Hi all, I am currently running into problems when making functions of an arbitrary number of arguments in C/C++. I am using DJGPP version 3.2. Here's a reduced version of the code I'm trying to work with: //Code starts here: test.c #include #include void Warning(char *warningstring, ...) { va_list arg_list; va_start(arg_list, warningstring); printf("WARNING: "); printf(warningstring, arg_list); va_end(arg_list); return; } main() { Warning("This is a %s.\n", "test"); } //Code ends here Firstly, I'm pretty sure what i've got there is ok and without error - although I hope someone will prove me wrong in a way... =) Well, here's what happens.... If use the following command line: gcc test.c -o test.exe I get zero compilation errors but this is the output when i run the program: WARNING: This is a !_. or something similar. Ok, well that's the first problem. Second one is when i use this command line instead: gpp test.c -o test.exe (gpp rather than gcc) I get the following compilation errors: In file included from test.c:2: c:/djgpp/lib/gcc-lib/djgpp/3.2/include/stdarg.h:110: conflicting types for ` typedef char*va_list' c:/djgpp/include/stdio.h:35: previous declaration as `typedef void*va_list' So then I tried renaming c:/djgpp/lib/gcc-lib/djgpp/3.2/include/stdarg.h to something else for the time being. It then compiled fine, but then same thing happened when executing the program i.e. incorrect output. Incidentally, I have also tried doing Warning("number is %d\n", 123456); and it's given me an output of something like 1212356, which is also clearly wrong. Can anyone help? Edd