• [^] # Re: Ca traduit bien un état d'esprit de la part des développeurs de systemd

    Posté par . En réponse au journal Systemd vs Linux, quand l'intransigeance d'un développeur tourne au ridicule.... Évalué à 2.

    Ça fait quelques années que je ne code plus en C mais ton code me fait un peu froid dans le dos:

    • Le commentaire est faux: ta fonction ne compare pas p1 et p2 mais les valeurs pointées *p1 et *p2; à condition que ce soient des entiers.
    • Les paramètres sont déclarés en const void* (pointeur sur n'importe quel type) alors que la fonction ne traite que des entiers. Il aurait été plus judicieux de déclarer des const int*. D'ailleurs qu'attends-tu comme résultat si on fait:
    float a = 1.0, b = 2.0;
    int c = intcmp0(&a, &b);
    • Si on déclare correctement les pointeurs en const int* tes cast (int*) sont inutiles.
    • Quel est l'intérêt de passer des pointeurs sur des entiers en paramètres alors que passer directement les valeurs de ces entiers ne prendrait pas plus de place sur la pile et que ça éviterait deux indirections dans le calcul ? Ta fonction se simplifie donc en :
    int intcmp0(int a, int b)
    {
     return a-b;
    }
    • Finalement, quel est l'intérêt de faire une fonction pour réimplémenter la soustraction entière ? Quel différence y a-t-il entre:
    int a = 1, b = 2;
    int c = intcmp0(a,b);

    et

    int a = 1, b = 2;
    int c = a - b;