Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: rozdělení do souborů - Makra

Aktivity
Avatar
Jan Osuský
Člen
Avatar
Jan Osuský:29.5.2018 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.5.2018 14:12
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Jan Osuský
Martin Dráb:29.5.2018 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
29.5.2018 14:51
2 + 2 = 5 for extremely large values of 2
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Jan Osuský
DarkCoder:29.5.2018 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
29.5.2018 17:27
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Jan Osuský
Člen
Avatar
Jan Osuský:30.5.2018 12:49

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

 
Nahoru Odpovědět
30.5.2018 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.