Bonjour,
Je recherche un exemple d'implémentation qui, conformément à ce que semble
autoriser la norme, ne définirait aucune fonction main (ou WinMain, ou
autre).
J'imagine qu'une telle implémentation génèrerait un code de prologue qui
lancerait les constructeurs d'une ou plusieurs classes, dont une nommée
par
exemple Application.
Si j'ai bien compris, C++Builder6 pourrait fournir cet exemple, s'il
"cachait", ou plutôt ne créait pas, et donc rendait non-éditable le
fichier
NomDuProjet.cpp (macro d'instanciation de la fiche principale du projet +
WinMain()).
De toutes façons, il faut bien que, sous Windows, le lieur fournisse en
fin
de compte un point d'entrée conforme au prototype WinMain() ....
Ce n'est pas pour un devoir (j'ai un peu passé l'âge), mais c'est quand
même
pour un travail de rédactiion.
Bonne messe, Cordialement,
Pierre
Bonjour,
Je recherche un exemple d'implémentation qui, conformément à ce que semble
autoriser la norme, ne définirait aucune fonction main (ou WinMain, ou
autre).
J'imagine qu'une telle implémentation génèrerait un code de prologue qui
lancerait les constructeurs d'une ou plusieurs classes, dont une nommée
par
exemple Application.
Si j'ai bien compris, C++Builder6 pourrait fournir cet exemple, s'il
"cachait", ou plutôt ne créait pas, et donc rendait non-éditable le
fichier
NomDuProjet.cpp (macro d'instanciation de la fiche principale du projet +
WinMain()).
De toutes façons, il faut bien que, sous Windows, le lieur fournisse en
fin
de compte un point d'entrée conforme au prototype WinMain() ....
Ce n'est pas pour un devoir (j'ai un peu passé l'âge), mais c'est quand
même
pour un travail de rédactiion.
Bonne messe, Cordialement,
Pierre
Bonjour,
Je recherche un exemple d'implémentation qui, conformément à ce que semble
autoriser la norme, ne définirait aucune fonction main (ou WinMain, ou
autre).
J'imagine qu'une telle implémentation génèrerait un code de prologue qui
lancerait les constructeurs d'une ou plusieurs classes, dont une nommée
par
exemple Application.
Si j'ai bien compris, C++Builder6 pourrait fournir cet exemple, s'il
"cachait", ou plutôt ne créait pas, et donc rendait non-éditable le
fichier
NomDuProjet.cpp (macro d'instanciation de la fiche principale du projet +
WinMain()).
De toutes façons, il faut bien que, sous Windows, le lieur fournisse en
fin
de compte un point d'entrée conforme au prototype WinMain() ....
Ce n'est pas pour un devoir (j'ai un peu passé l'âge), mais c'est quand
même
pour un travail de rédactiion.
Bonne messe, Cordialement,
Pierre
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.
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.
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.
Thomas Abbé wrote: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.
Pas tout à fait :
3.6.1 Main function
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. [Note: in a freestanding environment, startup and termination
is implementation-defined; startup contains the execution of
constructors for objects of namespace scope with static storage
duration; termination contains the execution of destructors for objects
with static storage duration. ]
Pour ce qu'est une freestanding implementation :
1.4 Implementation compliance
A freestanding implementation is one in which execution may take place
without the benefit of an operating system, and has an implementation
defined set of libraries that includes certain language support
libraries (17.4.1.3).
En clair, c'est surtout destiné à pourvoir faire de l'embarquer en C++,
domaine où il n'y a pas d'OS, et où la notion d'une fonction main est un
peu difficile à mettre en place.
Nous avons donc les mêmes sources ...
Thomas Abbé wrote:
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.
Pas tout à fait :
3.6.1 Main function
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. [Note: in a freestanding environment, startup and termination
is implementation-defined; startup contains the execution of
constructors for objects of namespace scope with static storage
duration; termination contains the execution of destructors for objects
with static storage duration. ]
Pour ce qu'est une freestanding implementation :
1.4 Implementation compliance
A freestanding implementation is one in which execution may take place
without the benefit of an operating system, and has an implementation
defined set of libraries that includes certain language support
libraries (17.4.1.3).
En clair, c'est surtout destiné à pourvoir faire de l'embarquer en C++,
domaine où il n'y a pas d'OS, et où la notion d'une fonction main est un
peu difficile à mettre en place.
Nous avons donc les mêmes sources ...
Thomas Abbé wrote: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.
Pas tout à fait :
3.6.1 Main function
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. [Note: in a freestanding environment, startup and termination
is implementation-defined; startup contains the execution of
constructors for objects of namespace scope with static storage
duration; termination contains the execution of destructors for objects
with static storage duration. ]
Pour ce qu'est une freestanding implementation :
1.4 Implementation compliance
A freestanding implementation is one in which execution may take place
without the benefit of an operating system, and has an implementation
defined set of libraries that includes certain language support
libraries (17.4.1.3).
En clair, c'est surtout destiné à pourvoir faire de l'embarquer en C++,
domaine où il n'y a pas d'OS, et où la notion d'une fonction main est un
peu difficile à mettre en place.
Nous avons donc les mêmes sources ...
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.
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.
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.
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 ).
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 ).
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 ).
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".
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".
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".
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 ).
d'ailleurs est-ce que la bibliothèque de Windows inclut un main() qui va
appeler le WinMain() ?
Pas de main() qui appelle le pied() qui appelle le WinMain() !
Je ne vois effectivement pas l'intérêt d'ajouter cette
"incompatibilité".
L'appeler main() aurait été possible, et c'eut été catastrophique.
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 ).
d'ailleurs est-ce que la bibliothèque de Windows inclut un main() qui va
appeler le WinMain() ?
Pas de main() qui appelle le pied() qui appelle le WinMain() !
Je ne vois effectivement pas l'intérêt d'ajouter cette
"incompatibilité".
L'appeler main() aurait été possible, et c'eut été catastrophique.
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 ).
d'ailleurs est-ce que la bibliothèque de Windows inclut un main() qui va
appeler le WinMain() ?
Pas de main() qui appelle le pied() qui appelle le WinMain() !
Je ne vois effectivement pas l'intérêt d'ajouter cette
"incompatibilité".
L'appeler main() aurait été possible, et c'eut été catastrophique.
d'ailleurs est-ce que la bibliothèque de Windows inclut un main() qui va
appeler le WinMain() ?
Pas de main() qui appelle le pied() qui appelle le WinMain() !
Il y a quand même un truc troublant (au moins sur une implémentation) : il
est possible de surcharger WinMain().
Je ne vois effectivement pas l'intérêt d'ajouter cette
"incompatibilité".
L'appeler main() aurait été possible, et c'eut été catastrophique.
Le nom n'est pas important, c'est l'interface (simple) qui l'est. Le
WinMain() est souvent minuscule.
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
d'ailleurs est-ce que la bibliothèque de Windows inclut un main() qui va
appeler le WinMain() ?
Pas de main() qui appelle le pied() qui appelle le WinMain() !
Il y a quand même un truc troublant (au moins sur une implémentation) : il
est possible de surcharger WinMain().
Je ne vois effectivement pas l'intérêt d'ajouter cette
"incompatibilité".
L'appeler main() aurait été possible, et c'eut été catastrophique.
Le nom n'est pas important, c'est l'interface (simple) qui l'est. Le
WinMain() est souvent minuscule.
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
d'ailleurs est-ce que la bibliothèque de Windows inclut un main() qui va
appeler le WinMain() ?
Pas de main() qui appelle le pied() qui appelle le WinMain() !
Il y a quand même un truc troublant (au moins sur une implémentation) : il
est possible de surcharger WinMain().
Je ne vois effectivement pas l'intérêt d'ajouter cette
"incompatibilité".
L'appeler main() aurait été possible, et c'eut été catastrophique.
Le nom n'est pas important, c'est l'interface (simple) qui l'est. Le
WinMain() est souvent minuscule.
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
Pas de main() qui appelle le pied() qui appelle le WinMain() !
Il y a quand même un truc troublant (au moins sur une implémentation) :
il
est possible de surcharger WinMain().
Quels sont les différents prototypes de WinMain() et dans quels cas
sont-ils appelés ?
Je précise ma pensée : je ne vois pas pourquoi une fonction main() ou
WinMain() aurait besoin d'être surchargée vu qu'il n'y a qu'un seul type
d'appel possible : l'exécution du programme.
Nous sommes d'accord. Ça ne sert à rien, ça n'a pas de sens. C'est pour ça
Je ne vois effectivement pas l'intérêt d'ajouter cette
"incompatibilité".
L'appeler main() aurait été possible, et c'eut été catastrophique.
Le nom n'est pas important, c'est l'interface (simple) qui l'est. Le
WinMain() est souvent minuscule.
Je ne vois pas ce que cela change par rapport à main(), peux-tu apporter
des précisions ?
Ben, quand les copains de Billou ont écrit les premières API Windows, le
Revenons à nos moutons : en C et encore plus en C++, le main() devrait
également être tout petit.
Enfin, cela dépend de l'ampleur du programme.
Oui, j'ai tendance à penser qu'une petite moulinette peut avoir un gros
Un programme 100% portable ne tournera que sur des machine/OS dotés d'un
mode console
on peut tout à fait avec un main() sans affichage, donc le mode console
n'est pas nécessaire non plus (cf embarqué).
Ça, j'en était sûr en l'écrivant ;-)
Pas de main() qui appelle le pied() qui appelle le WinMain() !
Il y a quand même un truc troublant (au moins sur une implémentation) :
il
est possible de surcharger WinMain().
Quels sont les différents prototypes de WinMain() et dans quels cas
sont-ils appelés ?
Je précise ma pensée : je ne vois pas pourquoi une fonction main() ou
WinMain() aurait besoin d'être surchargée vu qu'il n'y a qu'un seul type
d'appel possible : l'exécution du programme.
Nous sommes d'accord. Ça ne sert à rien, ça n'a pas de sens. C'est pour ça
Je ne vois effectivement pas l'intérêt d'ajouter cette
"incompatibilité".
L'appeler main() aurait été possible, et c'eut été catastrophique.
Le nom n'est pas important, c'est l'interface (simple) qui l'est. Le
WinMain() est souvent minuscule.
Je ne vois pas ce que cela change par rapport à main(), peux-tu apporter
des précisions ?
Ben, quand les copains de Billou ont écrit les premières API Windows, le
Revenons à nos moutons : en C et encore plus en C++, le main() devrait
également être tout petit.
Enfin, cela dépend de l'ampleur du programme.
Oui, j'ai tendance à penser qu'une petite moulinette peut avoir un gros
Un programme 100% portable ne tournera que sur des machine/OS dotés d'un
mode console
on peut tout à fait avec un main() sans affichage, donc le mode console
n'est pas nécessaire non plus (cf embarqué).
Ça, j'en était sûr en l'écrivant ;-)
Pas de main() qui appelle le pied() qui appelle le WinMain() !
Il y a quand même un truc troublant (au moins sur une implémentation) :
il
est possible de surcharger WinMain().
Quels sont les différents prototypes de WinMain() et dans quels cas
sont-ils appelés ?
Je précise ma pensée : je ne vois pas pourquoi une fonction main() ou
WinMain() aurait besoin d'être surchargée vu qu'il n'y a qu'un seul type
d'appel possible : l'exécution du programme.
Nous sommes d'accord. Ça ne sert à rien, ça n'a pas de sens. C'est pour ça
Je ne vois effectivement pas l'intérêt d'ajouter cette
"incompatibilité".
L'appeler main() aurait été possible, et c'eut été catastrophique.
Le nom n'est pas important, c'est l'interface (simple) qui l'est. Le
WinMain() est souvent minuscule.
Je ne vois pas ce que cela change par rapport à main(), peux-tu apporter
des précisions ?
Ben, quand les copains de Billou ont écrit les premières API Windows, le
Revenons à nos moutons : en C et encore plus en C++, le main() devrait
également être tout petit.
Enfin, cela dépend de l'ampleur du programme.
Oui, j'ai tendance à penser qu'une petite moulinette peut avoir un gros
Un programme 100% portable ne tournera que sur des machine/OS dotés d'un
mode console
on peut tout à fait avec un main() sans affichage, donc le mode console
n'est pas nécessaire non plus (cf embarqué).
Ça, j'en était sûr en l'écrivant ;-)
En d'autres termes, WinMain n'est pas un "specific" de mon compilo.
C'est juste ce dernier point que je voulais vérifier.
Je pense que je vérifie des points qui sont commentés quelque part au fin
fond des documentations ;-)
Serait-il judicieux que la norme définisse un modificateur genre
"entrypoint" pour étendre la notion de main(), qui par défaut serait
conservée ?
Quand à prévoir un main() intermédiare dans le seul but de respecter un
détail d'une norme, ça me parait compliqué et inutile. main() ne reçoit
qu'une collection de char*, alors que WinMain() attend trois entiers et un
char*.
En d'autres termes, WinMain n'est pas un "specific" de mon compilo.
C'est juste ce dernier point que je voulais vérifier.
Je pense que je vérifie des points qui sont commentés quelque part au fin
fond des documentations ;-)
Serait-il judicieux que la norme définisse un modificateur genre
"entrypoint" pour étendre la notion de main(), qui par défaut serait
conservée ?
Quand à prévoir un main() intermédiare dans le seul but de respecter un
détail d'une norme, ça me parait compliqué et inutile. main() ne reçoit
qu'une collection de char*, alors que WinMain() attend trois entiers et un
char*.
En d'autres termes, WinMain n'est pas un "specific" de mon compilo.
C'est juste ce dernier point que je voulais vérifier.
Je pense que je vérifie des points qui sont commentés quelque part au fin
fond des documentations ;-)
Serait-il judicieux que la norme définisse un modificateur genre
"entrypoint" pour étendre la notion de main(), qui par défaut serait
conservée ?
Quand à prévoir un main() intermédiare dans le seul but de respecter un
détail d'une norme, ça me parait compliqué et inutile. main() ne reçoit
qu'une collection de char*, alors que WinMain() attend trois entiers et un
char*.