Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Antoine Leca
En , AG va escriure:
static char const monfichier_c[]="blablabla"; dans monfichier.c
quand je compile et que je lie, est-ce que je peux avoir la garantie que la chaine de caractère "blablabla" va se retrouver dans mon executable ?
Non.
Et si non pourquoi ?
Parce que le compilateur a le droit d'être intelligent, de s'apercevoir que la chaîne n'est pas utilisée dans monfichier.c (et ne peut pas l'être ailleurs), et donc qu'il peut très bien gagner de la place en ne la stockant pas dans l'exécutable.
À moins bien sûr que tu ne l'utilises, par exemple en initialisant un pointeur avec, ou en la renvoyant comme résultat d'une fonction.
Un autre truc qui marche parfois, mais n'est pas garanti, c'est de déclarer la chaîne volatile en plus de tout ce que tu as mis (voire à la place de const !)
Antoine
En 409A367D.9020504@tb.fr, AG va escriure:
static char const monfichier_c[]="blablabla";
dans monfichier.c
quand je compile et que je lie, est-ce que je peux avoir la garantie
que la chaine de caractère "blablabla" va se retrouver dans mon
executable ?
Non.
Et si non pourquoi ?
Parce que le compilateur a le droit d'être intelligent, de s'apercevoir que
la chaîne n'est pas utilisée dans monfichier.c (et ne peut pas l'être
ailleurs), et donc qu'il peut très bien gagner de la place en ne la stockant
pas dans l'exécutable.
À moins bien sûr que tu ne l'utilises, par exemple en initialisant un
pointeur avec, ou en la renvoyant comme résultat d'une fonction.
Un autre truc qui marche parfois, mais n'est pas garanti, c'est de déclarer
la chaîne volatile en plus de tout ce que tu as mis (voire à la place de
const !)
static char const monfichier_c[]="blablabla"; dans monfichier.c
quand je compile et que je lie, est-ce que je peux avoir la garantie que la chaine de caractère "blablabla" va se retrouver dans mon executable ?
Non.
Et si non pourquoi ?
Parce que le compilateur a le droit d'être intelligent, de s'apercevoir que la chaîne n'est pas utilisée dans monfichier.c (et ne peut pas l'être ailleurs), et donc qu'il peut très bien gagner de la place en ne la stockant pas dans l'exécutable.
À moins bien sûr que tu ne l'utilises, par exemple en initialisant un pointeur avec, ou en la renvoyant comme résultat d'une fonction.
Un autre truc qui marche parfois, mais n'est pas garanti, c'est de déclarer la chaîne volatile en plus de tout ce que tu as mis (voire à la place de const !)
Antoine
Emmanuel Delahaye
In 'fr.comp.lang.c', AG wrote:
si je mets :
static char const monfichier_c[]="blablabla";
dans monfichier.c
quand je compile et que je lie, est-ce que je peux avoir la garantie que la chaine de caractère "blablabla" va se retrouver dans mon executable ?
La garantie, non, car le langage C ne spécifie pas le format des exécutables, mais une forte probablilité, oui.
C'est à dire que si j'édite mon executable avec un éditeur de texte, je retrouverais quelque part la chaine "blablabla" ?
C'est probable, mais si tu es sous MS-DOS (et assimilés) ...
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.0) Gecko/20020530"
... il vaut mieux un éditeur cabaple de lire du binaire, pour qu'il ignore une éventuelle marque de fin de fichier non désirée (un code 0x26, ça peux se trouver dans n'importe quel exécutable...)
Et si non pourquoi ?
Euh, tu as le cas? Mets l'exécutable sur une serveur avec une url, qu'on aille voir (et peut être se prendre un virus de la mort qui tue)... Même pas peur!
-- -ed- get my email here: http://marreduspam.com/ad672570 The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9 FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', AG <ag@tb.fr> wrote:
si je mets :
static char const monfichier_c[]="blablabla";
dans monfichier.c
quand je compile et que je lie, est-ce que je peux avoir la garantie que
la chaine de caractère "blablabla" va se retrouver dans mon executable ?
La garantie, non, car le langage C ne spécifie pas le format des
exécutables, mais une forte probablilité, oui.
C'est à dire que si j'édite mon executable avec un éditeur de texte, je
retrouverais quelque part la chaine "blablabla" ?
C'est probable, mais si tu es sous MS-DOS (et assimilés) ...
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.0)
Gecko/20020530"
... il vaut mieux un éditeur cabaple de lire du binaire, pour qu'il ignore
une éventuelle marque de fin de fichier non désirée (un code 0x26, ça peux se
trouver dans n'importe quel exécutable...)
Et si non pourquoi ?
Euh, tu as le cas? Mets l'exécutable sur une serveur avec une url, qu'on
aille voir (et peut être se prendre un virus de la mort qui tue)... Même pas
peur!
--
-ed- get my email here: http://marreduspam.com/ad672570
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
quand je compile et que je lie, est-ce que je peux avoir la garantie que la chaine de caractère "blablabla" va se retrouver dans mon executable ?
La garantie, non, car le langage C ne spécifie pas le format des exécutables, mais une forte probablilité, oui.
C'est à dire que si j'édite mon executable avec un éditeur de texte, je retrouverais quelque part la chaine "blablabla" ?
C'est probable, mais si tu es sous MS-DOS (et assimilés) ...
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.0) Gecko/20020530"
... il vaut mieux un éditeur cabaple de lire du binaire, pour qu'il ignore une éventuelle marque de fin de fichier non désirée (un code 0x26, ça peux se trouver dans n'importe quel exécutable...)
Et si non pourquoi ?
Euh, tu as le cas? Mets l'exécutable sur une serveur avec une url, qu'on aille voir (et peut être se prendre un virus de la mort qui tue)... Même pas peur!
-- -ed- get my email here: http://marreduspam.com/ad672570 The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9 FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
AG
Emmanuel Delahaye wrote:
Et si non pourquoi ?
Euh, tu as le cas? Mets l'exécutable sur une serveur avec une url, qu'on aille voir (et peut être se prendre un virus de la mort qui tue)... Même pas peur!
Non non, je n'ai pas le cas. Je cherchais juste un méthode déterministe pour pouvoir retrouver la liste des fichiers, ainsi que leur version, utilisés pour compiler un executable, à partir de celui-ci.
j'ai la réponse à ma question.
Emmanuel Delahaye wrote:
Et si non pourquoi ?
Euh, tu as le cas? Mets l'exécutable sur une serveur avec une url, qu'on
aille voir (et peut être se prendre un virus de la mort qui tue)... Même pas
peur!
Non non, je n'ai pas le cas. Je cherchais juste un méthode déterministe
pour pouvoir retrouver la liste des fichiers, ainsi que leur version,
utilisés pour compiler un executable, à partir de celui-ci.
Euh, tu as le cas? Mets l'exécutable sur une serveur avec une url, qu'on aille voir (et peut être se prendre un virus de la mort qui tue)... Même pas peur!
Non non, je n'ai pas le cas. Je cherchais juste un méthode déterministe pour pouvoir retrouver la liste des fichiers, ainsi que leur version, utilisés pour compiler un executable, à partir de celui-ci.