-
Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: " " <f...@W...gazeta.pl>
Newsgroups: pl.comp.programming
Subject: Re: Inicjalizacja/przypisanie wartości dla struktur w C
Date: Wed, 21 Dec 2011 13:52:54 +0000 (UTC)
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 67
Message-ID: <jcsobm$oog$1@inews.gazeta.pl>
References: <jcsfeo$20k5$1@news2.ipartners.pl>
NNTP-Posting-Host: localhost
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: 8bit
X-Trace: inews.gazeta.pl 1324475574 25360 172.20.26.238 (21 Dec 2011 13:52:54 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Wed, 21 Dec 2011 13:52:54 +0000 (UTC)
X-User: fir
X-Forwarded-For: 31.61.130.243
X-Remote-IP: localhost
Xref: news-archive.icm.edu.pl pl.comp.programming:194402
[ ukryj nagłówki ]JDX <j...@o...pl> napisał(a):
> Witam,
>
> jest sobie następujący kawałek kodu w C:
>
> typedef struct {
> [... dużo pól typu int ...]
> } MyType;
>
> void aFunc(MyType *aPar)
> {
> MyType aLocalVar = *aPar;
>
> [... coś tam coś tam ...]
> }
>
> Spojrzałem sobie na standard C99
> (http://www.open-std.org/JTC1/SC22/WG14/www/docs/n12
56.pdf) i taka
> inicjalizacja struktur/unii, czy też ogólniej, przypisanie im wartości
> jest możliwa (rozdziały 6.7.8 i 6.5.16.1). Interesuje mnie coś takiego
> było możliwe w C "od zawsze".
>
> A pytam, ponieważ wczoraj natknąłem się na ciekawy problem. Otóż gdy
> próbuję skompilować kawałek (nie mojego) kodu z opcją -g (debug stuff
> on) za pomocą cokolwiek archaicznego gcc 3.4.1 dla MIPS32 linker skarży
> mi się na brak memcpy() w miejscach gdzie zmienne typu struct{...} są
> inicjalizowane w w/w sposób. Platforma docelowa jest "embedded" więc nie
> ma dostępnej standardowej "standardowej biblioteki C". Oczywiście mam
> swoją własną bibliotekę gdzie m.in. jest zdefiniowana funkcja
> lib_memcpy() oraz makro definiujące memcpy() jako lib_memcpy() i
> wszystko jest OK jeśli gdzieś tam w kodzie memcpy()jest wołane jawnie.
>
> Natomiast gdy kompiluję kod z -g0 -O3 (debug stuff off, optimized) to
> kompilacja przebiega bez problemów. Wgląda na to, że gcc używa memcpy()
> jako "konstruktora kopiującego" z tym że w pierwszym przypadku używa (a
> przynajmniej próbuje) funkcji ze standardowej biblioteki C a w drugim
> funkcji wbudowanej w kompilator.
>
> Oczywiście gdy podmienię inicjalizację na coś takiego:
>
> MyType aLocalVar;
> memcpy(&aLocalVar, aPar, sizeof(MyType));
>
> to wszystko jest OK w obu przypadkach.
>
> Tak więc ponawiam pytanie - czy tego typu inicjalizacja zawsze była
> możliwa w C? Bo mam przeczucie że nie zawsze. A z drugiej strony ten
> problem to dla mnie nowość ponieważ we własnym kodzie zawsze
> inicjalizowałem typy złożone albo przez przypisanie wartości
> poszczególnym polom albo właśnie przez jawne wywołanie memcpy().
o ile ja pamietam jako cos czytalem to nie od samego
poczatku ale zrobiono to wczesnie gdzies tak w poczatku
lat 80tych (nie jest to precyzyjne info, tylko mowie ze tak
cos zapamiatalem, o ile to sa wogole dobre informacje)
kiedys ostatnio pytalem na grupi pl.comp.lang.c o podobna
kwestie tj mozliwosc przypisywania (w runtime) wyrazeniami
typu s = {90,80,70}; to o ile pamietam ktos odpowiedzial ze
to wrzucono w 89 czy 99 (tez nie pamiatam dokladnie ani daty
ani w sumie faktu)
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Najnowsze wątki z tej grupy
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
Najnowsze wątki
- 2025-01-19 Test - nie czytać
- 2025-01-19 qqqq
- 2025-01-19 Tauron przysyła aneks
- 2025-01-19 Nowa ładowarka Moya a Twizy -)
- 2025-01-18 Power BANK z ładowaniem przelotowym robi PRZERWY
- 2025-01-18 Pomoc dla Filipa ;)
- 2025-01-18 znowu kradno i sie nie dzielo
- 2025-01-18 Zieloni oszuchiści
- 2025-01-18 Zielonka => Specjalista ds. public relations <=
- 2025-01-18 Warszawa => Frontend Developer (JS, React) <=
- 2025-01-18 Warszawa => Software .Net Developer <=
- 2025-01-18 Warszawa => Developer .NET (mid) <=
- 2025-01-18 Katowice => Administrator IT - Systemy Operacyjne i Wirtualizacja <=
- 2025-01-17 Zniknął list gończy za "Frogiem". Frog się nam odnalazł?
- 2025-01-17 Kto wytłumaczy "głupiemu" prezydentowi Dudzie wielką moc prawną "dekretu premiera" TUSKA? [(C)Korneluk (2025)]