Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

#define kontra const, a wydajność?

Ostatnio zmodyfikowano 2009-07-13 00:20
Autor Wiadomość
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:
--------------------------------------------
C/C++
#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
--------------------------------------------
C/C++
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
--------------------------------------------

P-8473
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.
P-19033
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
P-19034
manfred
» 2009-07-12 23:33:47
Jak wiesz to po co się pytasz?? :>
P-19040
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?
P-19041
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).
P-19042
1 « 2 »
Poprzednia strona Strona 2 z 2