Scolring - Forum

Entraides et échanges autour de la technologie Scol - Informations and exchanges on the Scol technology

Vous pouvez changer la langue de l'interface une fois inscrit - You can change the language once registered

You are not logged in.

#1 28-Sep-2011 17:19:37

arkeon
Admin. / Scol language & OpenSpace3D developer
From: Nantes
Registered: 30-Mar-2009
Posts: 5,081
Website

MSVC vs GCC

oups .. en effet français sur celui la smile

jeff avait déja commencer a nettoyer le projet VM, peut être que ça vaudrait plus le coup de faire en sorte que ça compile aussi en dehors de VC, c'est peut être moins longs que de recoder des fonctions ?
Après je ne connais pas les env. de dev sous linux ^^

Offline

#2 28-Sep-2011 17:45:05

iri
Admin. / Scol language & Scol apps developer
From: France
Registered: 22-Feb-2009
Posts: 2,024
Website

Re: MSVC vs GCC

C'est surtout que nombre de fonctions utilisées sont made in Microsoft alors même que des fonctions standards ou des portages compatibles existent.
Ces fonctions et les headers qui les accompagnent sont sous une licence MS qui pose des problèmes (outre le fait qu'il faudrait rajouter tous ces headers +/- interdépendants et les libs associées).

Ce qu'a fait Jeff (Nodrev), je l'en félicitais récemment, c'est de différencier non seulement au niveau des plateformes (Win/Linux) mais aussi des compilos (VC++/gcc notamment). C'est une voie à suivre lorsqu'il n'y a pas de fonctions standards (à vérifier dans les codes en cours s'il n'existe pas des fonctions standards toutes bêtes plutôt que des fonctions issues de msdn ... cool )

Offline

#3 30-Sep-2011 10:35:56

Nodrev
Scol Language & OS3D developer
From: Nantes, France
Registered: 29-Dec-2009
Posts: 197

Re: MSVC vs GCC

Oui, un petit define pour une fonction qui n'existe pas sur tout les plateformes (je pense aux fonctions dites "sécurisée" de la lib std de msvc++, genre printf_s, qui en fait est pas du tout plus sécurisé si le développeur fait nawak) pour chaque compilo peut être utile dans certains cas.

Offline

#4 30-Sep-2011 10:55:32

iri
Admin. / Scol language & Scol apps developer
From: France
Registered: 22-Feb-2009
Posts: 2,024
Website

Re: MSVC vs GCC

Quelle différence avec snprintf par exemple ?

Offline

#5 30-Sep-2011 13:10:04

Nodrev
Scol Language & OS3D developer
From: Nantes, France
Registered: 29-Dec-2009
Posts: 197

Re: MSVC vs GCC

Toutes les fonction "_s" de microsoft, les "secures" comme ils appellent ça, prennent toutes un size_t supplémentaire en param qui correspond à la taille maxi du "char*" que tu passes.
Sauf que effectivement, si on ajoute ce param à un sprintf (non "secure" selon Bilou) pour faire un sprintf_s, on à la même chose qu'un snprintf, (qui lui est "secure" selon Redmond... Heu attendez, zètes sûr, y'a un truc qui m'échappe  neutral...)!
De toutes manières, si tu calcules mal la taille, c'est pas plus secure, et comme les erreurs d'overflow avec ces fonctions sont quasiment toujours du à un mauvais calcul de cette taille ("j'ai déjà ajouté +1 pour le \0 ou pas?"...), c'est de la br******e microsoftienne.
Le truc, c'est que sous Windaube, les fonctions sans "_s" sont dépréciées, et il était sujet de les virer à un moment donné (heureusement, ce n'est plus d'actualité, il semblerait qu'elle seront conservées, mais ça générèe plein de warning dégueus quand tu les utilises). Donc, dans ce cas, ce serait de faire un define, SCOL_SNPRINTF par exemple, qui prenne soit le snprintf normal pour gcc, ou l'autre sprintf_s pour msvc pour éviter les warnings.
Voila. Vive Microsoft, Vive le royaume de Redmond, et longue vie à Bilou (si avec ça, ça part pas en troll smile).

Offline

#6 30-Sep-2011 14:00:59

iri
Admin. / Scol language & Scol apps developer
From: France
Registered: 22-Feb-2009
Posts: 2,024
Website

Re: MSVC vs GCC

Sans troller, pourquoi ne pas utiliser directement snprintf dans tous les cas ? Puisque normée C99, portable sur tous les OS par surcroît, sans s'emmerder avec le preprocesseur ? (1)

Ou ce que tu essaies de me dire est que les fonctions normées génèrent des warnings de la part de MSVC ???

(1) parce qu'utiliser un compilo qui ne prend pas la norme, c'est antédiluvien, faut pas charrier !

Offline

#7 30-Sep-2011 14:06:55

Nodrev
Scol Language & OS3D developer
From: Nantes, France
Registered: 29-Dec-2009
Posts: 197

Re: MSVC vs GCC

Ben oui, mais c'est le cas... me parle pas de norme, j'ai regardé le C++11 (pas C mais bon), validé en aout, plein de nouveaux trucs dans le langage. Résultat: maj gcc déjà presque complète, béta de msvc11 -> environ 3% des nouveautés qui seront intégrées (j'ai trouvé ça sur un blog d'un des dev de microsoft).
Donc pour pas de warning, faut pas utiliser la fonction de la norme C... <edit>sous windoze</edit>

Last edited by Nodrev (30-Sep-2011 14:08:08)

Offline

#8 30-Sep-2011 14:13:04

iri
Admin. / Scol language & Scol apps developer
From: France
Registered: 22-Feb-2009
Posts: 2,024
Website

Re: MSVC vs GCC

Hallucinant !!

[mode TROLL]
Faut bazarder MSVC !!
Passe à un compilateur du XXIe siècle ! Pas un ersatz préhistorique !
[/mode TROLL]

Offline

#9 30-Sep-2011 14:26:38

Nodrev
Scol Language & OS3D developer
From: Nantes, France
Registered: 29-Dec-2009
Posts: 197

Re: MSVC vs GCC

Bon ben on est partit dans le troll de toutes façon, ça fait un bail qu'il s'agit plus de syspack smile
Et encore, je t'évite la liste des trucs que le compilo autorise alors qu'il ne devrait pas... Allez, juste deux de mémoire pour le plaisir:
- Avec Bilou, tu as le droit de déclarer une fonction membre d'une classe en précisant dans quelle classe tu est:

class MaClasse
{
public:
    void MaClasse::UneFonction();
    //    ********* <-- c'est pas dans la norme, incorrect, mais ça passe en msvc
};

- Avec Bilou, le compilo il te fait croire qu'il est capable de deviner de quelle implémentation d'un template tu parles quand tu utilises un de ses membres:

template <typename T> class MaClasse
{
private:
    int var;
public:
    void UneFonction();
};

template <class T> void MaClasse<T>::UneFonction()
{
    var = 10;
// *** <-- incorrect, ça compile avec msvc, mais tu as une chance que ça pète à l'exe, car on sait pas si c'est MaClasse<int>::var ou MaClasse<char>::var (ou un autre paramètre template, on s'en fout) de qui il s'agit ici.

   MaClasse<T>::var = 10;
// La norme... le pire, c'est que ça compile sous msvc... mais c'est pas obligatoire!!!
}

Promis, après j'arrête big_smile. Y'a quand même des trucs de bien... Le debugger est inégalé par exemple.

Offline

#10 1-Oct-2011 12:46:10

iri
Admin. / Scol language & Scol apps developer
From: France
Registered: 22-Feb-2009
Posts: 2,024
Website

Re: MSVC vs GCC

Effectivement, j'ai scindé la discussion.
Nous sommes d'ailleurs mieux au pub autour de quelques bibines pour ce genre de sujets wink

La norme n'est pas un dogme absolu à vénérer mais c'est me semble-t'il un socle commun, une sorte de fondation solide et efficace (car sensée être connue de tous) sur lequel on peut ensuite batir quelque chose, éventuellement en ajoutant des choses hors normes selon les besoins. Et puis les normes elles-même sont perfectibles ... Mais de là à faire l'inverse ??!!

Comme tu vois, j'ai une grande expérience de MSVC ! tongue
Où ça un troll ? cool

Offline

Board footer

Powered by FluxBB