[gull] Php/MsSQL obsoletes?

Marc Mongenet marc.mongenet at gmail.com
Wed Sep 28 13:33:16 CEST 2005


2005/9/28, Daniel Cordey <dc at mjt.ch>:
>
>Par exemple, on ne peut ecrire :
>
> int toto()
> {
>  return;
> }
>
> Le compilateur n'aime pas...

Si si, on peut, et le compilateur (GCC) ne dit rien du tout si
l'on insiste pas (-Wall).

> Stop ! Toutes les conversion "autorisees" entre certains type sont
> explicitement definies par le standard ANSI.
> Il n'y a aucune zone d'ombre...

Il y a tout de même pas mal de choses qui sont explicitement « indéfinies »
(undefined result) dans ANSI C.

> valeurs. Or, ceci doit etre detecte par le compilateur. Comme il est evident
> que l'on ne peut ecrire :
>
> float f;
> char s[10];
> f = s;
> s = f;

On ne peut plus, mais est-ce que les anciens compilateurs K&R C
l'interdisaient ? Il me semblent qu'ils ne testaient pas la compatibilité
des pointeurs et convertissaient même automatiquement entre
pointeurs et entier (bon, avec les flottants peut-être tout de même pas).

> Il donc bien d'un langage "type" qui ne permet pas n'importe quoi.

C++ pousse même encore plus loin dans ce sens, Stroustrup étant
un ardent défenseur de la vérification des types à la compilation.

> Il est bien entendu que ce que j'ai mentionne a propos de C n'est valable
> qu'a condition que l'on utilise la compilation en mode ANSI et que toutes
> les signatures de fonctions soient declarees !

Je crois que c'est devenu nécessaire en C99 (à vérifier tout de même).
En tout cas c'est nécessaire en C++.

> Ces regles sont exactement les memes que pour le 'C++' ! A la difference
> pret que C++ donne la possibilite d'ecrire du code qui peut "oriente" les
> conversions selon les desires du programmeurs.

Il me semble que C++ est devenu moins souple avec les pointeurs de
type void*. Je ne me rappelle plus des détails (faut le vouloir pour utiliser
des void* en C++).

Marc Mongenet



More information about the gull mailing list