• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Jak to jest z tym __attribute__?

Object Storage Arubacloud
0 głosów
466 wizyt
pytanie zadane 22 września 2018 w C i C++ przez Storm088 Obywatel (1,460 p.)
zamknięte 8 lipca 2019 przez Storm088

Pewnie wyjdę na głupka, który nie potrafi znaleść odpowiedzi w zwykłych googlach.

Ale zawsze warto spróbować tutaj. Mam pytanko do osób ogarniających __attribute__.

Chciałbym wiedzieć czy jest jakaś różnica w stawieniu tego __attribute__.

W internecie spotkałem się z dwoma zapisami:

__attribute__((const)) int foo(int x);

oraz

int foo(int x) __attribute__((const));

i zastanawiam się czy jest jakaś różnica spowodowana miejscem wstawienia.

Mam nadzieje, że ktoś będzie znał odpowiedź na moje pytaniesmiley

komentarz zamknięcia: rozwiązane

1 odpowiedź

0 głosów
odpowiedź 22 września 2018 przez adrian17 Ekspert (344,860 p.)
wybrane 22 września 2018 przez Storm088
 
Najlepsza

Z dokumentacji

https://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html#Attribute-Syntax

An attribute specifier list may appear immediately before a declarator (other than the first) in a comma-separated list of declarators in a declaration of more than one identifier using a single list of specifiers and qualifiers. Such attribute specifiers apply only to the identifier before whose declarator they appear. For example, in

__attribute__((noreturn)) void d0 (void),
    __attribute__((format(printf, 1, 2))) d1 (const char *, ...),
     d2 (void);

the noreturn attribute applies to all the functions declared; the format attribute only applies to d1.

An attribute specifier list may appear immediately before the comma, = or semicolon terminating the declaration of an identifier other than a function definition. Such attribute specifiers apply to the declared object or function

komentarz 22 września 2018 przez Storm088 Obywatel (1,460 p.)
Dzięki bardzo!!!
komentarz 23 września 2018 przez Storm088 Obywatel (1,460 p.)

@adrian17, Mam jeszcze jedno pytanie, bo zauważyłem, że attribute weszło do standardu i wygląda np tak 

[[ nodiscard ]] int f ( ) { return 0 ; }

i moje pytanie jest takie: Czy jest coś co ma taką samą funkcje jak __attribute__((const)), ale jest w standardzie. Jeśli jest to bardzo prosiłbym o podanie. I z góry dziękuje za odpowiedźsmiley

komentarz 23 września 2018 przez adrian17 Ekspert (344,860 p.)

Nie ma w standardzie. Jedyne co możesz to użyć:

[[gnu::const]] int f ( ) { return 0 ; }

który jest bezpośrednim odpowiednikiem __attribute__((const)), specyficznym dla GCC - tylko z nowszą składnią.

Podobne pytania

0 głosów
1 odpowiedź 326 wizyt
pytanie zadane 9 lutego 2022 w Sprzęt komputerowy przez Silencer Nowicjusz (130 p.)
0 głosów
1 odpowiedź 316 wizyt
0 głosów
3 odpowiedzi 599 wizyt

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...