#define kontra const, a wydajność?
Ostatnio zmodyfikowano 2009-07-13 00:20
DejaVu |
» 2009-07-13 01:03:13 Ciekawsze informacje jakie znalazłem na innym forum const vs #define - Forum (EN): Always use const, among various reasons, it has scope and has a type, while a #define has none of those.
'const' is used to define typed constants. '#define' is used to define macros.
Examples: --------------------------------------------
#define A 10
void f( int );
void g() { f( A ); } x86 code generated for g() by VC++ 6.0:
push 10 call f add esp, 4 --------------------------------------------
const int A = 10;
void f( int );
void g() { f( A ); } x86 code generated for g() by VC++ 6.0:
push 10 call f add esp, 4 --------------------------------------------
|
|
|
manfred |
» 2009-07-12 21:11:16 Bo preprocesor ogólnie jest wyklęty. Stałe mają tożsamość (można wyciągnąć adres, ale nie spieprzy to wydajności), zasięg (możesz zrobić stałą lokalnie dla funkcji, z makrami musisz się z #undef bawić) i nie tworzą nowych słów kluczowych (stałą możesz wsadzić w namespace... zrób to z makrem!). A z wydajnością jest tak, że kompilator traktuje stałą jak literał - używa zawsze w jej miejsce wartości podanej przy definicji, nie odwołuje się nigdzie. |
|
manfred |
» 2009-07-12 21:24:46 Pytasz się mnie, czy słyszałeś? Ja wiem, że u was, ludzi, mówi się, że elfowie wiedzą dużo, ale trafiłeś pod zły adres. Ja jeszcze młody jestem. A teraz serio - na 99.9% bzdura. //tja. "elfowie". W necie nie każdy musi być człowiekiem. Znam konia nawet... //Fanael |
|
manfred |
» 2009-07-12 23:33:47 Jak wiesz to po co się pytasz?? :> |
|
manfred |
» 2009-07-12 23:56:01 Makra omijające niedoróbki języka? To takie rzeczy są w C++? Nie lepiej wziąć nowy język? |
|
manfred |
» 2009-07-13 00:20:58 Tak? A jaki to? Przecież C++ z boostem jest najlepszym językiem na świecie (a już na pewno najszybciej kompilującym się i o najprostszej składni). |
|
1 « 2 » |