Pierre Maurette wrote:1 A program shall contain a global function called main, which is
the designated start of the program. It is implementation-defined
whether a program in a freestanding environment is required to
define a main function.
Nous avons donc les mêmes sources ... C'est l'anglais qui me
perturbe. Plus précisément, le "shall contain".
Et elles sont assez fiable en ce qui concerne le C++ tel que défini
dans la norme ;)
Je comprend le "shall contain" ainsi : Un programme en C++ "hosted"
(la grosse majorité) DOIT avoir une fonction main, mais un programme
"freestanding" peut en avoir une ou non, comme ça l'arrange.
Pierre Maurette wrote:
1 A program shall contain a global function called main, which is
the designated start of the program. It is implementation-defined
whether a program in a freestanding environment is required to
define a main function.
Nous avons donc les mêmes sources ... C'est l'anglais qui me
perturbe. Plus précisément, le "shall contain".
Et elles sont assez fiable en ce qui concerne le C++ tel que défini
dans la norme ;)
Je comprend le "shall contain" ainsi : Un programme en C++ "hosted"
(la grosse majorité) DOIT avoir une fonction main, mais un programme
"freestanding" peut en avoir une ou non, comme ça l'arrange.
Pierre Maurette wrote:1 A program shall contain a global function called main, which is
the designated start of the program. It is implementation-defined
whether a program in a freestanding environment is required to
define a main function.
Nous avons donc les mêmes sources ... C'est l'anglais qui me
perturbe. Plus précisément, le "shall contain".
Et elles sont assez fiable en ce qui concerne le C++ tel que défini
dans la norme ;)
Je comprend le "shall contain" ainsi : Un programme en C++ "hosted"
(la grosse majorité) DOIT avoir une fonction main, mais un programme
"freestanding" peut en avoir une ou non, comme ça l'arrange.
"Thomas Abbé" a écritbon, je ne sais pas si je te reponds a ta question. si tu programmes
en c++, il faut avoir une fonction main. selon le C++ standard, elle
doit etre de la forme int main() ou int main(int argc, const char*
argv[]) selon le C standard, aussi dautres variantes comme void
main() sont possible, mais ce nest pas recommende. ca depend en plus
du compilateur.
Non, je ne pense pas que ça dépende du compilateur.
Prenez un programme qui tourne, modifiez votre :
int main(int argc, const char* argv[])
en
int pied(int argc, const char* argv[])
Le compilateur s'en tamponne (testé sous Borland et G++).
Ça marche également avec orteil(), jambe(), etc. Le compilateur génère
du code objet pour les fonctions que vous lui proposez.
C'est le lieur qui ne veut pas de votre pied. Ou plutôt, si, il prend
votre pied, mais il lie votre code avec du code de start-up (qui varie
selon la cible spécifiée). Ce code fait le tampon entre votre code et
le chargeur de l'OS.
Si vous avez demandé une appli console, le code de start-up veut un
main() et vous avez des chances d'être portable.
Si vous construisez une appli Windows, il lui faudra un WinMain.
Une DLL, un DLLEntryPoint (et un DLLMain ).
Entrer directement sur une instance de classe principale me parait
possible (dans le futur ?). Ce que je souhaitais, c'était savoir s'il
existait un exemple.
"Thomas Abbé" <thomas_abbe@hotmail.com> a écrit
bon, je ne sais pas si je te reponds a ta question. si tu programmes
en c++, il faut avoir une fonction main. selon le C++ standard, elle
doit etre de la forme int main() ou int main(int argc, const char*
argv[]) selon le C standard, aussi dautres variantes comme void
main() sont possible, mais ce nest pas recommende. ca depend en plus
du compilateur.
Non, je ne pense pas que ça dépende du compilateur.
Prenez un programme qui tourne, modifiez votre :
int main(int argc, const char* argv[])
en
int pied(int argc, const char* argv[])
Le compilateur s'en tamponne (testé sous Borland et G++).
Ça marche également avec orteil(), jambe(), etc. Le compilateur génère
du code objet pour les fonctions que vous lui proposez.
C'est le lieur qui ne veut pas de votre pied. Ou plutôt, si, il prend
votre pied, mais il lie votre code avec du code de start-up (qui varie
selon la cible spécifiée). Ce code fait le tampon entre votre code et
le chargeur de l'OS.
Si vous avez demandé une appli console, le code de start-up veut un
main() et vous avez des chances d'être portable.
Si vous construisez une appli Windows, il lui faudra un WinMain.
Une DLL, un DLLEntryPoint (et un DLLMain ).
Entrer directement sur une instance de classe principale me parait
possible (dans le futur ?). Ce que je souhaitais, c'était savoir s'il
existait un exemple.
"Thomas Abbé" a écritbon, je ne sais pas si je te reponds a ta question. si tu programmes
en c++, il faut avoir une fonction main. selon le C++ standard, elle
doit etre de la forme int main() ou int main(int argc, const char*
argv[]) selon le C standard, aussi dautres variantes comme void
main() sont possible, mais ce nest pas recommende. ca depend en plus
du compilateur.
Non, je ne pense pas que ça dépende du compilateur.
Prenez un programme qui tourne, modifiez votre :
int main(int argc, const char* argv[])
en
int pied(int argc, const char* argv[])
Le compilateur s'en tamponne (testé sous Borland et G++).
Ça marche également avec orteil(), jambe(), etc. Le compilateur génère
du code objet pour les fonctions que vous lui proposez.
C'est le lieur qui ne veut pas de votre pied. Ou plutôt, si, il prend
votre pied, mais il lie votre code avec du code de start-up (qui varie
selon la cible spécifiée). Ce code fait le tampon entre votre code et
le chargeur de l'OS.
Si vous avez demandé une appli console, le code de start-up veut un
main() et vous avez des chances d'être portable.
Si vous construisez une appli Windows, il lui faudra un WinMain.
Une DLL, un DLLEntryPoint (et un DLLMain ).
Entrer directement sur une instance de classe principale me parait
possible (dans le futur ?). Ce que je souhaitais, c'était savoir s'il
existait un exemple.
Revenons à nos moutons : en C et encore plus en C++, le main() devrait
également être tout petit.
Un programme 100% portable ne tournera que sur des machine/OS dotés
d'un mode console, dont le format d'exécutable permettra au lieur de
faire en sorte (code de prologue ou de startup) que le main() reçoive
correctement formatés les paramètres saisis par l'utilisateur. C'est
le cas de DOS puis de tous les Windows.
Mais j'ai l'impression que cette portabilité à 100%(du source de
l'application entière) est moins importante que le fait de bien
séparer ce qui est spécifique de ce qui est portable, le coeur de
métier du programme, ses classes ou fonctions.
Il est clair que la portabilité de certains utilitaires n'a pas de
sens. Si le travail sur l'interface est important, il faudra se
tourner vers des solutions comme wxWindows. Ça semble séduisant, je
suis en train de le regarder sous Wondows, je verrai ensuite sous
Linux. Il est certain que sur d'autres bécannes que des micros, la
portabilité totale est plus intéressante.
Revenons à nos moutons : en C et encore plus en C++, le main() devrait
également être tout petit.
Un programme 100% portable ne tournera que sur des machine/OS dotés
d'un mode console, dont le format d'exécutable permettra au lieur de
faire en sorte (code de prologue ou de startup) que le main() reçoive
correctement formatés les paramètres saisis par l'utilisateur. C'est
le cas de DOS puis de tous les Windows.
Mais j'ai l'impression que cette portabilité à 100%(du source de
l'application entière) est moins importante que le fait de bien
séparer ce qui est spécifique de ce qui est portable, le coeur de
métier du programme, ses classes ou fonctions.
Il est clair que la portabilité de certains utilitaires n'a pas de
sens. Si le travail sur l'interface est important, il faudra se
tourner vers des solutions comme wxWindows. Ça semble séduisant, je
suis en train de le regarder sous Wondows, je verrai ensuite sous
Linux. Il est certain que sur d'autres bécannes que des micros, la
portabilité totale est plus intéressante.
Revenons à nos moutons : en C et encore plus en C++, le main() devrait
également être tout petit.
Un programme 100% portable ne tournera que sur des machine/OS dotés
d'un mode console, dont le format d'exécutable permettra au lieur de
faire en sorte (code de prologue ou de startup) que le main() reçoive
correctement formatés les paramètres saisis par l'utilisateur. C'est
le cas de DOS puis de tous les Windows.
Mais j'ai l'impression que cette portabilité à 100%(du source de
l'application entière) est moins importante que le fait de bien
séparer ce qui est spécifique de ce qui est portable, le coeur de
métier du programme, ses classes ou fonctions.
Il est clair que la portabilité de certains utilitaires n'a pas de
sens. Si le travail sur l'interface est important, il faudra se
tourner vers des solutions comme wxWindows. Ça semble séduisant, je
suis en train de le regarder sous Wondows, je verrai ensuite sous
Linux. Il est certain que sur d'autres bécannes que des micros, la
portabilité totale est plus intéressante.
En d'autres termes, WinMain n'est pas un "specific" de mon compilo.
C'est juste ce dernier point que je voulais vérifier.
main() est également considéré comme une fonction ordinaire.
En d'autres termes, WinMain n'est pas un "specific" de mon compilo.
C'est juste ce dernier point que je voulais vérifier.
main() est également considéré comme une fonction ordinaire.
En d'autres termes, WinMain n'est pas un "specific" de mon compilo.
C'est juste ce dernier point que je voulais vérifier.
main() est également considéré comme une fonction ordinaire.
Note qu'une implémentation « freestanding » peut fournir tout ce qu'elle
veut en plus de la minimum exigé. Et que certaines implémentations très
répandues (VC++, g++, Comeau...) sont en fait des implémentations
« freestanding ».
Note qu'une implémentation « freestanding » peut fournir tout ce qu'elle
veut en plus de la minimum exigé. Et que certaines implémentations très
répandues (VC++, g++, Comeau...) sont en fait des implémentations
« freestanding ».
Note qu'une implémentation « freestanding » peut fournir tout ce qu'elle
veut en plus de la minimum exigé. Et que certaines implémentations très
répandues (VC++, g++, Comeau...) sont en fait des implémentations
« freestanding ».
Depuis quelques temps, g++ propose un drapeau -fhosted/-ffree-standing
qui, en plus des multiples -std=, est cense te permettre de choisir le
type d'implementation que tu veux.
Depuis quelques temps, g++ propose un drapeau -fhosted/-ffree-standing
qui, en plus des multiples -std=, est cense te permettre de choisir le
type d'implementation que tu veux.
Depuis quelques temps, g++ propose un drapeau -fhosted/-ffree-standing
qui, en plus des multiples -std=, est cense te permettre de choisir le
type d'implementation que tu veux.
In article ,
wrote:Note qu'une implémentation « freestanding » peut fournir tout ce
qu'elle veut en plus de la minimum exigé. Et que certaines
implémentations très répandues (VC++, g++, Comeau...) sont en fait
des implémentations « freestanding ».
Depuis quelques temps, g++ propose un drapeau -fhosted/-ffree-standing
qui, en plus des multiples -std=, est cense te permettre de choisir le
type d'implementation que tu veux. Meme si, bien sur, de par sa
nature, g++ est un peu dependant de l'OS sous-jacent pour en faire un
compilo conforme, je suis sur que Gaby et d'autres se feront un
plaisir, tot ou tard, de corriger ce petit point de detail quant a la
definition de main, si necessaire.
Mais bon, de toutes facons, une implementation conforme, c'est une
implementation qui permet de compiler des unites de programme de
maniere conforme a la norme, non ? g++ aurait parfaitement le droit
de cacher la partie strictement conforme derriere
-fonce-in-a-blue-moon, n'est-ce-pas ?
In article <d6652001.0312080325.6976a747@posting.google.com>,
<kanze@gabi-soft.fr> wrote:
Note qu'une implémentation « freestanding » peut fournir tout ce
qu'elle veut en plus de la minimum exigé. Et que certaines
implémentations très répandues (VC++, g++, Comeau...) sont en fait
des implémentations « freestanding ».
Depuis quelques temps, g++ propose un drapeau -fhosted/-ffree-standing
qui, en plus des multiples -std=, est cense te permettre de choisir le
type d'implementation que tu veux. Meme si, bien sur, de par sa
nature, g++ est un peu dependant de l'OS sous-jacent pour en faire un
compilo conforme, je suis sur que Gaby et d'autres se feront un
plaisir, tot ou tard, de corriger ce petit point de detail quant a la
definition de main, si necessaire.
Mais bon, de toutes facons, une implementation conforme, c'est une
implementation qui permet de compiler des unites de programme de
maniere conforme a la norme, non ? g++ aurait parfaitement le droit
de cacher la partie strictement conforme derriere
-fonce-in-a-blue-moon, n'est-ce-pas ?
In article ,
wrote:Note qu'une implémentation « freestanding » peut fournir tout ce
qu'elle veut en plus de la minimum exigé. Et que certaines
implémentations très répandues (VC++, g++, Comeau...) sont en fait
des implémentations « freestanding ».
Depuis quelques temps, g++ propose un drapeau -fhosted/-ffree-standing
qui, en plus des multiples -std=, est cense te permettre de choisir le
type d'implementation que tu veux. Meme si, bien sur, de par sa
nature, g++ est un peu dependant de l'OS sous-jacent pour en faire un
compilo conforme, je suis sur que Gaby et d'autres se feront un
plaisir, tot ou tard, de corriger ce petit point de detail quant a la
definition de main, si necessaire.
Mais bon, de toutes facons, une implementation conforme, c'est une
implementation qui permet de compiler des unites de programme de
maniere conforme a la norme, non ? g++ aurait parfaitement le droit
de cacher la partie strictement conforme derriere
-fonce-in-a-blue-moon, n'est-ce-pas ?
Quant à g++, je ne sais pas quelle est la position actuelle des
développeurs sur ce sujet ; à la rigueur, ce n'est même pas important,
dans la mesure qu'ils me fournissent un outil qui me sert bien. Mais
dans le temps, les développeurs de gcc avaient bien insisté sur le fait
qu'il n'était pas hosted pour ne pas prendre la responsibilité (ou la
blame) des bibliothèques qu'ils n'avaient pas écrites.
Quant à g++, je ne sais pas quelle est la position actuelle des
développeurs sur ce sujet ; à la rigueur, ce n'est même pas important,
dans la mesure qu'ils me fournissent un outil qui me sert bien. Mais
dans le temps, les développeurs de gcc avaient bien insisté sur le fait
qu'il n'était pas hosted pour ne pas prendre la responsibilité (ou la
blame) des bibliothèques qu'ils n'avaient pas écrites.
Quant à g++, je ne sais pas quelle est la position actuelle des
développeurs sur ce sujet ; à la rigueur, ce n'est même pas important,
dans la mesure qu'ils me fournissent un outil qui me sert bien. Mais
dans le temps, les développeurs de gcc avaient bien insisté sur le fait
qu'il n'était pas hosted pour ne pas prendre la responsibilité (ou la
blame) des bibliothèques qu'ils n'avaient pas écrites.
Depuis quelques temps, g++ propose un drapeau -fhosted/-ffree-standing
qui, en plus des multiples -std=, est cense te permettre de choisir le
type d'implementation que tu veux.
d'ailleurs, j'ai peut-être une question un peu hors sujet mais si l'on
veut faire un code freestanding (par exemple un OS) en C++ (ce n'est pas
mon cas, rassurez-vous) avec g++. Quelles fonctions faut-il définir ?
Enfin ce que je veux demander plus précisément, c'est : quelle fonctions
C ou C++ sont supposées existantes dans la bibliothèque standard et que
g++ utilise pour implémenter les choses spécifiques au C++ (new, new[],
delete, delete[], d'autres ... ?).
Des gens connaissent-ils le prototype de ces fonctions ?
Depuis quelques temps, g++ propose un drapeau -fhosted/-ffree-standing
qui, en plus des multiples -std=, est cense te permettre de choisir le
type d'implementation que tu veux.
d'ailleurs, j'ai peut-être une question un peu hors sujet mais si l'on
veut faire un code freestanding (par exemple un OS) en C++ (ce n'est pas
mon cas, rassurez-vous) avec g++. Quelles fonctions faut-il définir ?
Enfin ce que je veux demander plus précisément, c'est : quelle fonctions
C ou C++ sont supposées existantes dans la bibliothèque standard et que
g++ utilise pour implémenter les choses spécifiques au C++ (new, new[],
delete, delete[], d'autres ... ?).
Des gens connaissent-ils le prototype de ces fonctions ?
Depuis quelques temps, g++ propose un drapeau -fhosted/-ffree-standing
qui, en plus des multiples -std=, est cense te permettre de choisir le
type d'implementation que tu veux.
d'ailleurs, j'ai peut-être une question un peu hors sujet mais si l'on
veut faire un code freestanding (par exemple un OS) en C++ (ce n'est pas
mon cas, rassurez-vous) avec g++. Quelles fonctions faut-il définir ?
Enfin ce que je veux demander plus précisément, c'est : quelle fonctions
C ou C++ sont supposées existantes dans la bibliothèque standard et que
g++ utilise pour implémenter les choses spécifiques au C++ (new, new[],
delete, delete[], d'autres ... ?).
Des gens connaissent-ils le prototype de ces fonctions ?