Re: C89 "bug"

Liste des GroupesRevenir à cl c  
Sujet : Re: C89 "bug"
De : bc (at) *nospam* freeuk.com (bart)
Groupes : comp.lang.c
Date : 13. Dec 2024, 19:39:26
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vjhv0u$3i840$1@dont-email.me>
References : 1 2 3 4 5
User-Agent : Mozilla Thunderbird
On 13/12/2024 15:41, Thiago Adams wrote:
Em 12/13/2024 12:01 PM, Kaz Kylheku escreveu:
On 2024-12-13, Thiago Adams <thiago.adams@gmail.com> wrote:
unfortunately, this solution does not work if we have two objects.
>
union U {
         double d;
         int i;
   };
>
union U u1 = { .d=2.2 };
union U u2 = { .i=1   };
>
Idea: have several declarations of the union in different translation
units.
>
/* translation unit for u1 */
union U {
   double d;
   int i;
};
extern union U u1 = { 2.2 };
>
/* translation unit for u2 */
union U {
   int i;
   double d;
};
extern union U u2 = { 1 };
>
 another solution could be call a function that initializes before main.
 extern union U u1;
 void before_main()
{
   u1.d = 1.2;
}
 
I assume the initialisation is at file-scope.
Then your suggestion could work, if you can arrange for it to be called.
But I think that will be a problem: this can occur in some arbitrary module compiled at a different time from the one containing the program's main(): either earlier, or later.
How will the compiler know which function(s) needs to be called from main(), when it translated the module containing main?
I can think of an approach, but it's not simple, and may be over-kill if this is something that is infrequently encountered.

Date Sujet#  Auteur
13 Dec 24 * C89 "bug"17Thiago Adams
13 Dec 24 +* Re: C89 "bug"6Michael S
13 Dec 24 i`* Re: C89 "bug"5Thiago Adams
13 Dec 24 i `* Re: C89 "bug"4Kaz Kylheku
13 Dec 24 i  `* Re: C89 "bug"3Thiago Adams
13 Dec 24 i   `* Re: C89 "bug"2bart
13 Dec 24 i    `- Re: C89 "bug"1Thiago Adams
13 Dec 24 +* Re: C89 "bug"8Keith Thompson
13 Dec 24 i`* Re: C89 "bug"7Thiago Adams
13 Dec 24 i +* Re: C89 "bug"5David Brown
13 Dec 24 i i+* Re: C89 "bug"2Thiago Adams
13 Dec 24 i ii`- Re: C89 "bug"1Thiago Adams
14 Dec 24 i i`* Re: C89 "bug"2bart
15 Dec 24 i i `- Re: C89 "bug"1David Brown
13 Dec 24 i `- Re: C89 "bug"1Keith Thompson
14 Dec 24 `* Re: C89 "bug"2Waldek Hebisch
14 Dec 24  `- Re: C89 "bug"1Keith Thompson

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal