Vánoční nadílka Vánoční nadílka
Vánoční akce! Daruj lepší budoucnost blízkým nebo sobě. Až +50 % zdarma na dárkové poukazy. Více informací
Avatar
Jan Osuský
Člen
Avatar
Jan Osuský:29. května 14:12

Ahoj, rád bych se zeptal jaký je rozdíl mezi

#pragma once

a

#ifndef _SOUBOR_H_
#define _SOUBOR_H_
// něco
#endif
 
Odpovědět 29. května 14:12
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Jan Osuský
Martin Dráb:29. května 14:51

V dnešní době asi žádný, protože snad všechny mainstreamové překladače podporují tu pragmu.

Hlavní výhoda druhého zápisu spočívá v tom, že právě není nutné, aby překladač tu pragmu znal. Navíc jej můžeš používat i na dodefinovávání maker, která na některých platformách existují, ale na jiných ne. Například

#ifndef min
#define min(a, b)       ((a > b) ? a : b)
#endif

Případně můžeš přes #undef daná makra v určité části kódu odstranit.

Nahoru Odpovědět  +2 29. května 14:51
2 + 2 = 5 for extremely large values of 2
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Jan Osuský
DarkCoder:29. května 17:27

Pragma, jak už zde bylo uvedeno, je podporována drtivou většinou těch nejpoužívanějších překladačů a v dnešní době se stává standardem pro vytváření hlavičkových souborů. Oproti include guards poskytuje jednoduchost, menší náchylnost k chybám a poskytuje větší časovou efektivitu při překladu programu.

Naproti tomu direktivy preprocesoru nacházejí uplatnění v širší oblasti. Tou největší oblastí je sekce ladění programu. Bez té se v rozsáhlejších projektech neobejdeš, popřípadě minimálně Ti ušetří spoustu drahocenného času a starostí. Dále portabilita, definice maker, maker s parametry, stanovení jejich rozsahu platnosti a další.

Obojí tedy má své uplatnění.

Nahoru Odpovědět  +2 29. května 17:27
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Avatar
Jan Osuský
Člen
Avatar
Jan Osuský:30. května 12:49

Aha, díky moc za rady, budu si to pamatovat :-).

 
Nahoru Odpovědět 30. května 12:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.