🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

2 total messages Started by M.M. Fri, 13 May 2016 09:24
dziwny błąd c. d.
#308555
Author: M.M.
Date: Fri, 13 May 2016 09:24
29 lines
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.
#308556
Author: AK
Date: Fri, 13 May 2016 16:06
28 lines
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