Header c++
Emilie
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Coucou tout le monde
Voilà, je dois réutiliser un programme déjà existant
evidemment je rencontre pleins de pb. Pour essayer de remonter les pb un par un, je me suis fait un petit pgr à la con du genre le classique "hello world" mais en incluant les headers du pgr initial.
Et là ca ne passe pas à la compilation...
Mon soucis se situe dans le header à la ligne :
typedef INT (*VPX_CALLBACK)(INT);
Je suis débutante en c++ et le peu que je sais ne me permet pas de comprendre cette ligne de commande. Je pensais qu'une commande 'typedef' était définie autrement...
Est ce que qqun pourrait me décrire ce que fait exactement cette ligne ?
Apparemment c'est le INT qui pose pb.
Merci à tous
Voilà, je dois réutiliser un programme déjà existant
evidemment je rencontre pleins de pb. Pour essayer de remonter les pb un par un, je me suis fait un petit pgr à la con du genre le classique "hello world" mais en incluant les headers du pgr initial.
Et là ca ne passe pas à la compilation...
Mon soucis se situe dans le header à la ligne :
typedef INT (*VPX_CALLBACK)(INT);
Je suis débutante en c++ et le peu que je sais ne me permet pas de comprendre cette ligne de commande. Je pensais qu'une commande 'typedef' était définie autrement...
Est ce que qqun pourrait me décrire ce que fait exactement cette ligne ?
Apparemment c'est le INT qui pose pb.
Merci à tous
A voir également:
- Header c++
- Your browser sent a request that this server could not understand. size of a request header field exceeds server limit. ✓ - Forum Bureautique
- Bad pool header ✓ - Forum Windows
- Bad request ... - Forum Réseaux sociaux
- Rgb header c'est quoi - Forum Carte-mère/mémoire
- 400 bad request request header or cookie too large ✓ - Forum Google Chrome
8 réponses
Je fais du C++ tout les jours et je comprends que tu sois déconcertée, car moi même je le suis. Classiquement
permet d'utiliser indifféremment les types a ou b. En général un typedef permet d'alléger les notations ou permet de maintenir plus facilement un programme (par exemple si le type a devait devenir a2, il suffit juste de changer le typedef si dans le reste du programme on utilises b).
Dans ton cas je subodore le truc crad. Pour commencer, un type devrait toujours s'écrire en minuscule, les majuscules étant réservées en pratique aux variables d'un #define. Du coup est ce que le programmeur à défini un type INT (car le vrai type, c'est int) ?
En supposant que la ligne soit juste (donc INT et VPX_CALLBACK sont des types qu'il a définis), celà signifie que dans le programme tout les types INT sont en fait des INT castés en *VPX_CALLBACK, donc au final des *VPX_CALLBACK. J'aime autant te le dire c'est vraiment très mal programmé si c'est ça que ton prédecesseur à voulu faire. En plus je suis surprise qua ça marche car le type INT est du coup défini "récursivement" dans cette ligne...
En toute rigueur les variables INT devraient en fait toutes êtres déclarées comme des *VPX_CALLBACK...
Bonne chance
typedef a b;
permet d'utiliser indifféremment les types a ou b. En général un typedef permet d'alléger les notations ou permet de maintenir plus facilement un programme (par exemple si le type a devait devenir a2, il suffit juste de changer le typedef si dans le reste du programme on utilises b).
Dans ton cas je subodore le truc crad. Pour commencer, un type devrait toujours s'écrire en minuscule, les majuscules étant réservées en pratique aux variables d'un #define. Du coup est ce que le programmeur à défini un type INT (car le vrai type, c'est int) ?
En supposant que la ligne soit juste (donc INT et VPX_CALLBACK sont des types qu'il a définis), celà signifie que dans le programme tout les types INT sont en fait des INT castés en *VPX_CALLBACK, donc au final des *VPX_CALLBACK. J'aime autant te le dire c'est vraiment très mal programmé si c'est ça que ton prédecesseur à voulu faire. En plus je suis surprise qua ça marche car le type INT est du coup défini "récursivement" dans cette ligne...
En toute rigueur les variables INT devraient en fait toutes êtres déclarées comme des *VPX_CALLBACK...
Bonne chance
Salut.
Moi non plus je pige pas.
je pense que le mieux est de rechercher la définition de INT dans tout les en tetes (il y a des outils pour ça : source navigator, grep...)
Il peut aussi y avoir des problème de portabilité.
J'ai repris un programme Linux, et je l'ai mi sous Win.
il bliquait à la ligne
int IN;
car en fait dans les en tetes standard de windows, inclu par des biais tel que iostream il y a un "#define IN" !
donc, gaffe aux macros, et de fait à l'ordre d'inclusion des entetes.
Pour savoir si cela viens des macro, je te conseil le gcc -E qui n'utilise que le preprocesseur, et par consequent donne du C++ "pur"
Voila. en espérant que ça te serve.
Moi non plus je pige pas.
je pense que le mieux est de rechercher la définition de INT dans tout les en tetes (il y a des outils pour ça : source navigator, grep...)
Il peut aussi y avoir des problème de portabilité.
J'ai repris un programme Linux, et je l'ai mi sous Win.
il bliquait à la ligne
int IN;
car en fait dans les en tetes standard de windows, inclu par des biais tel que iostream il y a un "#define IN" !
donc, gaffe aux macros, et de fait à l'ordre d'inclusion des entetes.
Pour savoir si cela viens des macro, je te conseil le gcc -E qui n'utilise que le preprocesseur, et par consequent donne du C++ "pur"
Voila. en espérant que ça te serve.
Merci
Je vais rechercher tout ca.
Au niveau compatibilité je suis presque sur de moi. J'ai envoyé un mail à l'organisme qui a produit ce soft et bien évidemment ils me proposent de faire ce que je veux, mais moyenant finance bien sur !
Sinon il m'a dit qu'il fallait compiler avec VisualBasic. Ce qui me donne pas de meilleurs résultats...
Je vais essayer de bosser en cc+ pure comme tu dis. On m'a parlé de Borland aussi. Qu'est ce que vous en pensez ?
Je vais rechercher tout ca.
Au niveau compatibilité je suis presque sur de moi. J'ai envoyé un mail à l'organisme qui a produit ce soft et bien évidemment ils me proposent de faire ce que je veux, mais moyenant finance bien sur !
Sinon il m'a dit qu'il fallait compiler avec VisualBasic. Ce qui me donne pas de meilleurs résultats...
Je vais essayer de bosser en cc+ pure comme tu dis. On m'a parlé de Borland aussi. Qu'est ce que vous en pensez ?
Laisse tomber le VB c'est de la m... Fais du c++ classique et laisse tomber tout ce qui est borland, histoire d'avoir un produit fait à partir de langages non propriétaires ça évitera les histoires de licences et en plus comme ça se sera compatible si un jour tu veux passer sous linux.
Je ne vois absolument pas comment un programme c++ pourrait compiler avec VB vu que ce sont deux langages différents.
Pour être très sincère je pense que soit le mec qui a pondu cette ligne était un gitan du c++ soit un énorme gourou qui a fait une feinte qui m'échappe. Mais dans les deux cas c'est mauavis car un programme doit être lisible avant tout, justement en vue d'être repris par la suite...
Au final ton programme compile ou non à cette ligne ou pas ? Si ce n'est pas le cas essaie de la mettre en commentaire on sera rapidement o elle avait un impact. Le mieux serait de s'en affranchir et de faire un truc bien clean. En plus s'il s'agit bien d'un cast, le gars aurait du utiliser les casts du c++ (dynamic_cast, static_cast, const_cast...). Bref...
Jèteaussi un oeil ici :
http://c.developpez.com/faq/cpp/?page=conversions
Bonne chance
Je ne vois absolument pas comment un programme c++ pourrait compiler avec VB vu que ce sont deux langages différents.
Pour être très sincère je pense que soit le mec qui a pondu cette ligne était un gitan du c++ soit un énorme gourou qui a fait une feinte qui m'échappe. Mais dans les deux cas c'est mauavis car un programme doit être lisible avant tout, justement en vue d'être repris par la suite...
Au final ton programme compile ou non à cette ligne ou pas ? Si ce n'est pas le cas essaie de la mettre en commentaire on sera rapidement o elle avait un impact. Le mieux serait de s'en affranchir et de faire un truc bien clean. En plus s'il s'agit bien d'un cast, le gars aurait du utiliser les casts du c++ (dynamic_cast, static_cast, const_cast...). Bref...
Jèteaussi un oeil ici :
http://c.developpez.com/faq/cpp/?page=conversions
Bonne chance
Salut.
Moi aussi, je voi pas ce qu'il veut dire par VB. Peut être voulait il dire essayer de compiler avec Visual C++.
Par contre, pour Borland, je ne suis pas tout à fait daccord avec Mamiemando. le comppilateur bcc de borland est parait il l'un des meilleurs (voire le meilleur) pour le C++. Et comme il compile du C++, je voi pas pourquoi le language serai propriétaire. (En tout cas, c'est ce que j'ai lu sur divers forum C++)
Dans tout les cas, si changer de compilateur résoud le problème, ce n'est pas une bonne chose, car cela veut dire que le code n'est pas aux normes et ne sera pas portable.
Moi aussi, je voi pas ce qu'il veut dire par VB. Peut être voulait il dire essayer de compiler avec Visual C++.
Par contre, pour Borland, je ne suis pas tout à fait daccord avec Mamiemando. le comppilateur bcc de borland est parait il l'un des meilleurs (voire le meilleur) pour le C++. Et comme il compile du C++, je voi pas pourquoi le language serai propriétaire. (En tout cas, c'est ce que j'ai lu sur divers forum C++)
Dans tout les cas, si changer de compilateur résoud le problème, ce n'est pas une bonne chose, car cela veut dire que le code n'est pas aux normes et ne sera pas portable.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je pense que c'est elle puisqu'il s'agit d'emilie :-) Borland je n'ai rien contre mais je ne sais pas si l'environnement de développement borland est gratuit ou non. Comme je diraisoui au feeling (mais je peux me tromper) je lui suggère plutôt d'utiliser gcc + dev cpp.
Bonne chance
Bonne chance
D'après Devellopez.com, le compilateur est gratos et le plus rapide sous Win. Par contre l'environnement est payant. En revanche (jamais essayer) il est possible d'utiliser DevCpp avec un autre compilateur que gcc : outils->options compilateur->Programmes.
a+
a+
Je suis bien d'accord avec toi, définir des INT alors que la déclaration int existe déjà c'est super lourd et dangereux. dans ce header je ne vois pas de définition de INT mais ca peut être perdu dans un des autres nombreux headers... d'autant plus qu'il utilise les deux :
#define EyeType INT
#define DataQuality int
ok, je comprend le truc, c'est vrai que j'avais oublié le coup de caster...
Mais c'est vrai que c'est vraiment étrange de foutre de la récursivité là dedant !!!
ca me fait rire que tu trouves toi aussi ca crade car c'est censé être un programme fait par des pros. je bose dans un labo Inserm et en fait ce programme est tiré d'un soft qu'on a ACHETER ! L'application fonctionne très bien quand on la lance avec le .exe mais je voudrait intégrer le lancement de ce soft à d'autres applications. Dans leur joli manuel ils expliquent que c'est tout simple et qu'il n'y a qu'à suivre l'exemple qu'ils donnent. Ce dont je te parle est tiré de ce fameux exemple...
Merci encore !