Quote:
Originariamente inviato da fek
No. In C non puoi esprimere algoritmi che sono eseguiti a compile time (metaprogrammazione) come parte integrante del linguaggio. Non ha i template.
|
a parte che questo non diminuisce il potere espressivo del linguaggio perchè qualsiasi cosa volevi fare usando i template la puoi fare in un altro modo... comunque la metaprogrammazione in C esiste e si basa sul preprocessore (anche se minimale)
Codice:
#define SWAP(a, b, type) { type __tmp_c; c = b; b = a; a = c; }
int main()
{
int a = 3;
int b = 5;
printf("a is %d and b is %d\n", a, b);
SWAP(a, b, int);
printf("a is now %d and b is now %d\n", a, b);
return 0;
}
inoltre se parliamo di C++ i template non sono sempre una soluzione elegante e/o efficiente
http://people.cs.uchicago.edu/~jacob...templates.html
soprattutto quando dice
Quote:
C++ templates hide your intentions from the compiler: did you mean type abstraction? Did you mean a syntax extension? Did you mean constant-folding or compile-time code generation? The compiler doesn't know, so it has to just blindly apply the copy-and-paste strategy and then see what happens
|