D - Something wrong in std.c.stdio.d Linux version
- =?ISO-8859-1?Q?Julio_Jim=E9nez?= (37/37) Mar 12 2004 //program 1.d
- news.digitalmars.com (3/40) Mar 12 2004 Probably you'll need to link against libncurses.a.
- =?ISO-8859-1?Q?Julio_Jim=E9nez?= (10/13) Mar 12 2004 Yes, I know it... (I can use any C library writing my own interface).
- Matthew (4/17) Mar 12 2004 I'd wondered about that myself some time ago. Didn't come up with any
- lord.vegeta ica.luz.ve (16/42) Mar 12 2004 It has been a long time since the last time I programmed something in C ...
- =?ISO-8859-1?Q?Julio_Jim=E9nez?= (29/40) Mar 13 2004 Ok correct, those functions are in conio.h for windows/dos C compiler,
//program 1.d import std.c.stdio; void main() { printf("Press a key to continue...\n"); char a = getchar(); printf("Ok\n"); } compile and run ok... but import std.c.stdio; void main() { printf("Press a key to continue...\n"); char a = getch(); printf("Ok\n"); } output: gcc 1.o -o 1 -g -lphobos -lpthread -lm 1.o(.gnu.linkonce.t_Dmain+0xf): En la función `_Dmain': : undefined reference to `getch' collect2: ld devolvió el estado de salida 1 some functions in stdio.d not in Linux, like: int getch(); int getche(); int kbhit(); I can find getch() at curses.h no match for getche() and kbhit()...... I think that functions may be declared in the way: version (Win32) { int getch(); int getche(); int kbhit(); } Is that correct? regards Julio Jiménez
Mar 12 2004
Probably you'll need to link against libncurses.a. "Julio Jiménez" <jujibo inicia.es> escribió en el mensaje news:c2s0nk$5o1$1 digitaldaemon.com...//program 1.d import std.c.stdio; void main() { printf("Press a key to continue...\n"); char a = getchar(); printf("Ok\n"); } compile and run ok... but import std.c.stdio; void main() { printf("Press a key to continue...\n"); char a = getch(); printf("Ok\n"); } output: gcc 1.o -o 1 -g -lphobos -lpthread -lm 1.o(.gnu.linkonce.t_Dmain+0xf): En la función `_Dmain': : undefined reference to `getch' collect2: ld devolvió el estado de salida 1 some functions in stdio.d not in Linux, like: int getch(); int getche(); int kbhit(); I can find getch() at curses.h no match for getche() and kbhit()...... I think that functions may be declared in the way: version (Win32) { int getch(); int getche(); int kbhit(); } Is that correct? regards Julio Jiménez
Mar 12 2004
news.digitalmars.com wrote:Probably you'll need to link against libncurses.a.Yes, I know it... (I can use any C library writing my own interface). But that's not what i'm talking... int getch(); int getche(); int kbhit(); Not defined in linux stdio.h and are included in std.c.stdio. That's why i suggest to define only for windows version regards Julio Jiménez
Mar 12 2004
I'd wondered about that myself some time ago. Didn't come up with any conclusion though ... "Julio Jiménez" <jujibo inicia.es> wrote in message news:c2sfnv$v97$1 digitaldaemon.com...news.digitalmars.com wrote:Probably you'll need to link against libncurses.a.Yes, I know it... (I can use any C library writing my own interface). But that's not what i'm talking... int getch(); int getche(); int kbhit(); Not defined in linux stdio.h and are included in std.c.stdio. That's why i suggest to define only for windows version regards Julio Jiménez
Mar 12 2004
It has been a long time since the last time I programmed something in C for windows/dos, but the functions getch(), getche() and kbhit() were always declared in a compiler specific conio.h and not in stdio.h. The C standard does not include those functions in stdio.h. In curses or ncurses for unix there are equivalent functions, but they do not necessarily have the same names and certainly they aren't in stdio.h. In article <c2sj04$1503$1 digitaldaemon.com>, Matthew says...I'd wondered about thatmyself some time ago. Didn't come up with anyconclusion though ... "Julio Jiménez" <jujibo inicia.es> wrote in message news:c2sfnv$v97$1 digitaldaemon.com...Fuera Cháveznews.digitalmars.com wrote:Probably you'll need to link against libncurses.a.Yes, I know it... (I can use any C library writing my own interface). But that's not what i'm talking... int getch(); int getche(); int kbhit(); Not defined in linux stdio.h and are included in std.c.stdio. That's why i suggest to define only for windows version regards Julio Jiménez
Mar 12 2004
lord.vegeta ica.luz.ve wrote:It has been a long time since the last time I programmed something in C for windows/dos, but the functions getch(), getche() and kbhit() were always declared in a compiler specific conio.h and not in stdio.h. The C standard does not include those functions in stdio.h. In curses or ncurses for unix there are equivalent functions, but they do not necessarily have the same names and certainly they aren't in stdio.h.Ok correct, those functions are in conio.h for windows/dos C compiler, but that's not the quiestion. (we are not talking about one or more functions are in stdio.h conio.h bio.h.....) The fact is that we can use wrongly those functions in D under linux and that is wrong, as they are defined in module std.c.stdio for both versions (Linux and Windows). Those functions are not in Linux Standard Library.... there are some equivalent functions in curses library. But really in Linux don't need those functions. Linux is POSIX compliance, a keyboard is a device an i can read and write from devices (any device... not only keyboard) in another standard ways. I think the correct is issolate those functions under the version(windows) {...} or implement equivalent functions for linux version in phobos. In DMD 0.81 i can write this program: -----exaple.d------ import std.c.stdio; void main() { printf("Press a key to continue...\n"); char a = getch(); printf("Ok\n"); } ------------------ and complie ok under linux and windows, but the linker fails in linux version because getch() is not in linux standard library. That's simply wrong regards Julio
Mar 13 2004