Thread View: pl.comp.lang.c
2 messages
2 total messages
Started by M.M.
Fri, 13 May 2016 09:24
dziwny błąd c. d.
Author: M.M.
Date: Fri, 13 May 2016 09:24
Date: Fri, 13 May 2016 09:24
29 lines
1884 bytes
1884 bytes
Problem wrócił. Program ze strukturą o nazwie:
struct Result
nie działa.
Po samej zmianie nazwy typu na:
struct ResultL
działa prawidłowo.
Struktura jest zadeklarowana w pliku cpp, czyli widoczna jest tylko w
jednej jednostce kompilacji.
Program (w błędnej wersji) nie przechodzi mniej/więcej takiej asercji:
struct Result {
int a, b, c;
}
Result x = fun();
Result y = x;
ASSERT( x.b == y.b );
Oczywiście podałem uproszczony przykład, w prawdziwym kodzie jest
trochę ifów, jednak wystarczy że dopiszę literkę L na końcu nazwy i
asercje program przechodzi. Dla mnie to jest jakaś masakra.
Aha, jeszcze jedna ważna uwaga: pola skrajne, czyli pola a i c asercję
przechodzą.
Pozdrawiam
Re: dziwny błąd c. d.
Author: AK
Date: Fri, 13 May 2016 16:06
Date: Fri, 13 May 2016 16:06
28 lines
1691 bytes
1691 bytes
Użytkownik "M.M." <mmarszik@gmail.com> napisał w wiadomości
news:2642e3f4-ab3b-4778-baf4-ac8aca0dc045@googlegroups.com...
>Problem wrócił. Program ze strukturą o nazwie:
>struct Result
>nie działa.
>Struktura jest zadeklarowana w pliku cpp, czyli widoczna jest tylko w
>jednej jednostce kompilacji.
Zludne mniemanie.
> Program (w błędnej wersji) nie przechodzi mniej/więcej takiej asercji:
>
> struct Result {
> int a, b, c;
>}
>
>Result x = fun();
>Result y = x;
>ASSERT( x.b == y.b );
Zmien na:
struct Result x = fun();
struct Result y = x;
a Twoje problemy powinny sie skonczyc.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads