L'intérêt de suivre la norme c'est quand même d'être "portable" non ?
Une fois qu'on sait ce qui est implémenté par son compilo préféré, suivre le plus petit dénominateur commun entre la norme et l'implémentation du compilo permet à peu près d'être portable si jamais il fallait utiliser un autre compilo par la suite. Genre vais-je utiliser les extensions GNU ou pas ? Etc.
Bien sur il vaut mieux que les compilos implémentent une bonne partie de la norme, et que l'intersection des différents compilos ne soit pas trop petite
Après quand tu distribues des binaires et que tu es certains de rester sur un même compilo pourquoi pas. Mais sortons un peu du C et imagine un peu que tu aies à coder en OpenCL. Cette fois le compilo est dans le driver installé sur la machine cible, aie...
Par exemple j'ai codé un kernel OpenCL avec un tableau bi-dimensionnel:
Aucun problème avec Nvidia, mais un jour on a testé sur du matos AMD et là erreur de compilation au runtime !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ... void kernel(int a[10][10]) { ... ... = a[i][j]; }
La norme permet au moins de savoir qui est responsable (imagine un code vendu à un client pas content) et si on soumet un bug chez AMD ;-)
(en l'occurence il semble que c'était indéfini en 1.1 et c'est maintenant interdit en 1.2)
Partager