J'uilise Bloodshed Dev-C++ 4.9.9.2 pour mon petit programme en C qui doit
ensuite tourner sur un serveur NT4. J'ai déjà mis en production sur mon
serveur NT4 une première version de mon programme en C il y a maitenant
plusieurs mois et il tourne bien.
Le problème c'est que je veux faire évoluer mon programme et le debugueur
pas à pas marche mais quand il veut !! .
Il n'y a pas une option pour lui dire de mieux fonctionner sous XP ou un
autre compilateur pas pas capable de faire le même job ?
J'ai installé codeblocks qui fonctionne sur Windows 2000. Sur mon poste en Win98, lorsque je lance le débuggeur, j'obtient une boite de message : Erreur de démarrage du programme Le fichier PSAPI.DLL est lié à une exportation manquante NTDLL.DLL:NtAllocateVirtualMemory.
Je ne suis pas sûr que cet IDE fonctionne sous Windows 98.
'NTDLL', ca fait pas trop MS-DOS...
Forum :
http://forums.codeblocks.org/index.php
-- A+
Emmanuel Delahaye
J'ai installé codeblocks qui fonctionne sur Windows 2000.
Sur mon poste en Win98, lorsque je lance le débuggeur, j'obtient une boite de message :
Erreur de démarrage du programme
Le fichier PSAPI.DLL est lié à une exportation manquante NTDLL.DLL:NtAllocateVirtualMemory.
Je ne suis pas sûr que cet IDE fonctionne sous Windows 98.
J'ai installé codeblocks qui fonctionne sur Windows 2000. Sur mon poste en Win98, lorsque je lance le débuggeur, j'obtient une boite de message : Erreur de démarrage du programme Le fichier PSAPI.DLL est lié à une exportation manquante NTDLL.DLL:NtAllocateVirtualMemory.
Je ne suis pas sûr que cet IDE fonctionne sous Windows 98.
'NTDLL', ca fait pas trop MS-DOS...
Forum :
http://forums.codeblocks.org/index.php
-- A+
Emmanuel Delahaye
Harpo
Emmanuel Delahaye wrote:
Merci je le test car je craque un peu avec la bibliotheque strhing.h et strstr qui semble aussi marcher quand elle veut bien.
Rassure toi, ça ne change rien. Ce qui est en dessous est toujours mingw.
Je ne sais pas ce que c'est 'mingw'.
Par contre, je serais curieux de savoir quels problèmes tu as avec les fonctions de <string.h>. Je n'ai rien remarqué en 3/4 ans.
Donne un exemple de code qui ne fonctionne pas.
La question n'est pas là, elle fonctionnent bien en principe. Chqrlie vilipende strcat(), mais a priori elles font ce que dit le manuel. Le problème c'est qu'elles portent sur de strings terminés par 0, elles travaillent sur des char et font des copy etc. char par char, ce qui coute cher. En plus elles incitent à une paresse de mauvais aloi, il est facile d'écrire 'strlen( str )' 10 fois de rang pour un string qui n'a pas changé, même si c'est pas moi qui paie, je trouve que ça coute cher. pareil pour strncpy(), très dispendieux quand le string est long. Pour moi, une chaîne, c'est plutôt une adresse et une longueur, cela permet mieux d'optimiser les copy et on peut faire un bon algo pour implémenter memcpy. Même quand je fais un programme genre scanner qui traite principalement des chaînes de caractères, je n'emploie pas str* sinon si je suis quasiment obligé, le profiling me donne raison.
Emmanuel Delahaye wrote:
Merci je le test car je craque un peu avec la bibliotheque strhing.h
et strstr qui semble aussi marcher quand elle veut bien.
Rassure toi, ça ne change rien. Ce qui est en dessous est toujours
mingw.
Je ne sais pas ce que c'est 'mingw'.
Par contre, je serais curieux de savoir quels problèmes tu as avec les
fonctions de <string.h>. Je n'ai rien remarqué en 3/4 ans.
Donne un exemple de code qui ne fonctionne pas.
La question n'est pas là, elle fonctionnent bien en principe. Chqrlie
vilipende strcat(), mais a priori elles font ce que dit le manuel.
Le problème c'est qu'elles portent sur de strings terminés par 0, elles
travaillent sur des char et font des copy etc. char par char, ce qui
coute cher.
En plus elles incitent à une paresse de mauvais aloi, il est facile
d'écrire 'strlen( str )' 10 fois de rang pour un string qui n'a pas
changé, même si c'est pas moi qui paie, je trouve que ça coute cher.
pareil pour strncpy(), très dispendieux quand le string est long.
Pour moi, une chaîne, c'est plutôt une adresse et une longueur, cela
permet mieux d'optimiser les copy et on peut faire un bon algo pour
implémenter memcpy.
Même quand je fais un programme genre scanner qui traite principalement
des chaînes de caractères, je n'emploie pas str* sinon si je suis
quasiment obligé, le profiling me donne raison.
Merci je le test car je craque un peu avec la bibliotheque strhing.h et strstr qui semble aussi marcher quand elle veut bien.
Rassure toi, ça ne change rien. Ce qui est en dessous est toujours mingw.
Je ne sais pas ce que c'est 'mingw'.
Par contre, je serais curieux de savoir quels problèmes tu as avec les fonctions de <string.h>. Je n'ai rien remarqué en 3/4 ans.
Donne un exemple de code qui ne fonctionne pas.
La question n'est pas là, elle fonctionnent bien en principe. Chqrlie vilipende strcat(), mais a priori elles font ce que dit le manuel. Le problème c'est qu'elles portent sur de strings terminés par 0, elles travaillent sur des char et font des copy etc. char par char, ce qui coute cher. En plus elles incitent à une paresse de mauvais aloi, il est facile d'écrire 'strlen( str )' 10 fois de rang pour un string qui n'a pas changé, même si c'est pas moi qui paie, je trouve que ça coute cher. pareil pour strncpy(), très dispendieux quand le string est long. Pour moi, une chaîne, c'est plutôt une adresse et une longueur, cela permet mieux d'optimiser les copy et on peut faire un bon algo pour implémenter memcpy. Même quand je fais un programme genre scanner qui traite principalement des chaînes de caractères, je n'emploie pas str* sinon si je suis quasiment obligé, le profiling me donne raison.
Harpo
Emmanuel Delahaye wrote:
Les fonctions str* sont à utiliser avec parcimonie et à bon escient, c'est à dire quasiment jamais.
N'importe quoi...
Je maintiens et je double la mise.
Emmanuel Delahaye wrote:
Les fonctions str* sont à utiliser avec parcimonie et à bon escient,
c'est à dire quasiment jamais.
Les fonctions str* sont à utiliser avec parcimonie et à bon escient, c'est à dire quasiment jamais.
N'importe quoi...
Je maintiens et je double la mise.
Emmanuel Delahaye
Je ne sais pas ce que c'est 'mingw'.
Minimalist Gcc for Windows. T'as cassé ton Google, vilain garçon ?
La question n'est pas là, elle fonctionnent bien en principe. Chqrlie vilipende strcat(), mais a priori elles font ce que dit le manuel. Le problème c'est qu'elles portent sur de strings terminés par 0, elles travaillent sur des char et font des copy etc. char par char, ce qui coute cher.
Le problème n'est pas dans les fonctions, mais dans la choix qui a été fait d'implémenter les chaines avec une sentinelle. J'ai résolu ce problème il y a quelques temps avec :
http://mapage.noos.fr/emdel/clib.htm Module FSTR
-- A+
Emmanuel Delahaye
Je ne sais pas ce que c'est 'mingw'.
Minimalist Gcc for Windows. T'as cassé ton Google, vilain garçon ?
La question n'est pas là, elle fonctionnent bien en principe. Chqrlie
vilipende strcat(), mais a priori elles font ce que dit le manuel.
Le problème c'est qu'elles portent sur de strings terminés par 0, elles
travaillent sur des char et font des copy etc. char par char, ce qui
coute cher.
Le problème n'est pas dans les fonctions, mais dans la choix qui a été
fait d'implémenter les chaines avec une sentinelle. J'ai résolu ce
problème il y a quelques temps avec :
Minimalist Gcc for Windows. T'as cassé ton Google, vilain garçon ?
La question n'est pas là, elle fonctionnent bien en principe. Chqrlie vilipende strcat(), mais a priori elles font ce que dit le manuel. Le problème c'est qu'elles portent sur de strings terminés par 0, elles travaillent sur des char et font des copy etc. char par char, ce qui coute cher.
Le problème n'est pas dans les fonctions, mais dans la choix qui a été fait d'implémenter les chaines avec une sentinelle. J'ai résolu ce problème il y a quelques temps avec :
http://mapage.noos.fr/emdel/clib.htm Module FSTR
-- A+
Emmanuel Delahaye
Harpo
Emmanuel Delahaye wrote:
Je ne sais pas ce que c'est 'mingw'.
Minimalist Gcc for Windows. T'as cassé ton Google, vilain garçon ?
La question n'est pas là, elle fonctionnent bien en principe. Chqrlie vilipende strcat(), mais a priori elles font ce que dit le manuel. Le problème c'est qu'elles portent sur de strings terminés par 0, elles travaillent sur des char et font des copy etc. char par char, ce qui coute cher.
Le problème n'est pas dans les fonctions, mais dans la choix qui a été fait d'implémenter les chaines avec une sentinelle.
Je suis tout à fait d'accord sur ce point, c'est ce que je viens d'écrire. Mais il y a aussi le choix des fonctions, dans ce choix d'implémentation, certaines fonctions s'imposent comme strc[n]py, str[n]cat (au risque d'aggraver l'ulcère de Chqrlie), mais si on cherche un peu plus sophistiqué, on trouve souvent des fonctions qui répondrait presque au besoin mais qui en fait n'y répondent pas, comme strtok, strspn (une gourmande aussi celle-là) etc. Cela me semble typique d'une implémentation qui a précédé la conception. Je ne jete pas la pierre, il y a aussi des impératifs comme la deadline, le problème c'est que 1/4 de siècle après, il n'y a pas dans le langage de substitut aux null terminated strings et que les fonctions absconses str* tiennent le haut du pavé tout en étant plutôt inutiles.
J'ai résolu ce problème il y a quelques temps avec :
http://mapage.noos.fr/emdel/clib.htm Module FSTR
Où est la doc ?
Emmanuel Delahaye wrote:
Je ne sais pas ce que c'est 'mingw'.
Minimalist Gcc for Windows. T'as cassé ton Google, vilain garçon ?
La question n'est pas là, elle fonctionnent bien en principe. Chqrlie
vilipende strcat(), mais a priori elles font ce que dit le manuel.
Le problème c'est qu'elles portent sur de strings terminés par 0,
elles travaillent sur des char et font des copy etc. char par char,
ce qui coute cher.
Le problème n'est pas dans les fonctions, mais dans la choix qui a été
fait d'implémenter les chaines avec une sentinelle.
Je suis tout à fait d'accord sur ce point, c'est ce que je viens
d'écrire.
Mais il y a aussi le choix des fonctions, dans ce choix
d'implémentation, certaines fonctions s'imposent comme strc[n]py,
str[n]cat (au risque d'aggraver l'ulcère de Chqrlie), mais si on
cherche un peu plus sophistiqué, on trouve souvent des fonctions qui
répondrait presque au besoin mais qui en fait n'y répondent pas, comme
strtok, strspn (une gourmande aussi celle-là) etc.
Cela me semble typique d'une implémentation qui a précédé la conception.
Je ne jete pas la pierre, il y a aussi des impératifs comme la
deadline, le problème c'est que 1/4 de siècle après, il n'y a pas dans
le langage de substitut aux null terminated strings et que les
fonctions absconses str* tiennent le haut du pavé tout en étant plutôt
inutiles.
J'ai résolu ce problème il y a quelques temps avec :
Minimalist Gcc for Windows. T'as cassé ton Google, vilain garçon ?
La question n'est pas là, elle fonctionnent bien en principe. Chqrlie vilipende strcat(), mais a priori elles font ce que dit le manuel. Le problème c'est qu'elles portent sur de strings terminés par 0, elles travaillent sur des char et font des copy etc. char par char, ce qui coute cher.
Le problème n'est pas dans les fonctions, mais dans la choix qui a été fait d'implémenter les chaines avec une sentinelle.
Je suis tout à fait d'accord sur ce point, c'est ce que je viens d'écrire. Mais il y a aussi le choix des fonctions, dans ce choix d'implémentation, certaines fonctions s'imposent comme strc[n]py, str[n]cat (au risque d'aggraver l'ulcère de Chqrlie), mais si on cherche un peu plus sophistiqué, on trouve souvent des fonctions qui répondrait presque au besoin mais qui en fait n'y répondent pas, comme strtok, strspn (une gourmande aussi celle-là) etc. Cela me semble typique d'une implémentation qui a précédé la conception. Je ne jete pas la pierre, il y a aussi des impératifs comme la deadline, le problème c'est que 1/4 de siècle après, il n'y a pas dans le langage de substitut aux null terminated strings et que les fonctions absconses str* tiennent le haut du pavé tout en étant plutôt inutiles.
J'ai résolu ce problème il y a quelques temps avec :
http://mapage.noos.fr/emdel/clib.htm Module FSTR
Où est la doc ?
Pierre Maurette
Emmanuel Delahaye wrote: [...]
http://mapage.noos.fr/emdel/clib.htm Module FSTR
Où est la doc ? Quand on devise avec Dieu, quel est l'intérêt de lire le catéchisme ?
-- Pierre Maurette
Emmanuel Delahaye wrote:
[...]
http://mapage.noos.fr/emdel/clib.htm
Module FSTR
Où est la doc ?
Quand on devise avec Dieu, quel est l'intérêt de lire le catéchisme ?
Ben t'as le test unitaire à droite. Tu veux pas 100 balles et un Mars, non plus ?
-- A+
Emmanuel Delahaye
Harpo
Emmanuel Delahaye wrote:
http://mapage.noos.fr/emdel/clib.htm Module FSTR
Où est la doc ?
Ben t'as le test unitaire à droite. Tu veux pas 100 balles et un Mars, non plus ?
Quand je lis en français, c'est de gauche à droite, la lecture du source doit-elle précéder la lecture de la doc ? J'ai vu écrit 'tests unitaires', je n'ai pas vu écrit doc. Quand j'écris des test unitaires ce qui me prend la moitié du temps qui n'est pas consacré à la doc, j'écris des tests unitaires et je m'arrange pour qu'ils puissent servir d'exemples en complément de la doc, mais leur fonction est avant tout d'être des tests unitaires, j'en ai écrit une cinquantaine aujourd'hui, je suis d'accord, c'est moins chiant que la doc mais ça donne quand même envie de venir se défouler sur fclc...
Emmanuel Delahaye wrote:
http://mapage.noos.fr/emdel/clib.htm
Module FSTR
Où est la doc ?
Ben t'as le test unitaire à droite. Tu veux pas 100 balles et un Mars,
non plus ?
Quand je lis en français, c'est de gauche à droite, la lecture du source
doit-elle précéder la lecture de la doc ?
J'ai vu écrit 'tests unitaires', je n'ai pas vu écrit doc. Quand j'écris
des test unitaires ce qui me prend la moitié du temps qui n'est pas
consacré à la doc, j'écris des tests unitaires et je m'arrange pour
qu'ils puissent servir d'exemples en complément de la doc, mais leur
fonction est avant tout d'être des tests unitaires, j'en ai écrit une
cinquantaine aujourd'hui, je suis d'accord, c'est moins chiant que la
doc mais ça donne quand même envie de venir se défouler sur fclc...
Ben t'as le test unitaire à droite. Tu veux pas 100 balles et un Mars, non plus ?
Quand je lis en français, c'est de gauche à droite, la lecture du source doit-elle précéder la lecture de la doc ? J'ai vu écrit 'tests unitaires', je n'ai pas vu écrit doc. Quand j'écris des test unitaires ce qui me prend la moitié du temps qui n'est pas consacré à la doc, j'écris des tests unitaires et je m'arrange pour qu'ils puissent servir d'exemples en complément de la doc, mais leur fonction est avant tout d'être des tests unitaires, j'en ai écrit une cinquantaine aujourd'hui, je suis d'accord, c'est moins chiant que la doc mais ça donne quand même envie de venir se défouler sur fclc...
Emmanuel Delahaye
j'écris des tests unitaires et je m'arrange pour qu'ils puissent servir d'exemples en complément de la doc,
Bon ben voilà, t'as compris. Sinon, je pense que le codage est suffisament auto documenté pour se passer de doc, surtout pour un programmeur chevronné comme toi...
La seule chose à préciser, et encore, c'est le rôle du paramètre de fstr_create(). C'est un entier (puissance de 2 de préférence, minimum 1, Attention, avec 0, le comportement est indéfini !) qui indique la taille initiale de la chaine. (Taille dite 'raisonnable')
Si tu te sens le courage d'écrire une doc, tu es le bienvenu !
-- A+
Emmanuel Delahaye
j'écris des tests unitaires et je m'arrange pour
qu'ils puissent servir d'exemples en complément de la doc,
Bon ben voilà, t'as compris. Sinon, je pense que le codage est
suffisament auto documenté pour se passer de doc, surtout pour un
programmeur chevronné comme toi...
La seule chose à préciser, et encore, c'est le rôle du paramètre de
fstr_create(). C'est un entier (puissance de 2 de préférence, minimum 1,
Attention, avec 0, le comportement est indéfini !) qui indique la taille
initiale de la chaine. (Taille dite 'raisonnable')
Si tu te sens le courage d'écrire une doc, tu es le bienvenu !
j'écris des tests unitaires et je m'arrange pour qu'ils puissent servir d'exemples en complément de la doc,
Bon ben voilà, t'as compris. Sinon, je pense que le codage est suffisament auto documenté pour se passer de doc, surtout pour un programmeur chevronné comme toi...
La seule chose à préciser, et encore, c'est le rôle du paramètre de fstr_create(). C'est un entier (puissance de 2 de préférence, minimum 1, Attention, avec 0, le comportement est indéfini !) qui indique la taille initiale de la chaine. (Taille dite 'raisonnable')
Si tu te sens le courage d'écrire une doc, tu es le bienvenu !