Hi, in einem anderen Thread habe ich einen Hinweis auf "__builtin_ctz (x);" gefunden. Ich hätte das schon öfters brauchen können ... Wo finde ich denn solche Sachen in der Doku ? Ich kenne zwar die libc-Doku aber da stehen ja nur die libc-Sachen drin ... Wo gibts eine Liste/ÜBersicht o.ä. ??? Gruß Andreas
Na in der GCC Doku? http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html War doch tatsächlich der allererste Treffer bei Google. ;-) Ob man diese Sachen unbedingt verwenden sollte, ist die andere Frage - es ist eben kein Standard-C.
Mark Brandis schrieb: > Ob man diese Sachen unbedingt verwenden sollte, ist die andere Frage - > es ist eben kein Standard-C. Ja und? Man kann doch trotzdem von einer effizienten Implementierung profitieren:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
Wenn Effizienz so aussieht: >Built-in Function: int __builtin_ctz (unsigned int x) > >Returns the number of trailing 0-bits in x, starting at the least >significant bit position. If x is 0, the result is undefined. dann programmier ich's doch lieber gleich selbst. Ist einmal Arbeit und kann danach beliebig oft wiederverwendet werden.
Gast
#1335519
>Wenn Effizienz so aussieht: >>Built-in Function: int __builtin_ctz (unsigned int x) >> >>Returns the number of trailing 0-bits in x, starting at the least >>significant bit position. If x is 0, the result is undefined. >dann programmier ich's doch lieber gleich selbst. Ist einmal Arbeit und >kann danach beliebig oft wiederverwendet werden. Woraus erkennst Du da, das es ineffizient ist? Oder was soll "Wenn Effizienz so aussieht" heissen?
Dass x zur Laufzeit auch mal 0 sein kann, davon sollte man eigentlich ausgehen. Ich mag eben kein "undefined behaviour".
Johann L. schrieb: > Mark Brandis schrieb: > >> Ob man diese Sachen unbedingt verwenden sollte, ist die andere Frage - >> es ist eben kein Standard-C. > > Ja und? Man kann doch trotzdem von einer effizienten Implementierung > profitieren: >
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Jep, genau solche Wrapper verwende ich auch sehr gerne, wenn es darum geht Code, der nicht C-Standard kompatibel ist kompatibel zu machen. Wenn man portiert, muss man sich halt darum kümmern. Statt der static inline funktion könnte man auch einfach ein #error Not compiled with GCC nehmen ;) ;) (Höhö!)
Mark Brandis schrieb: > Dass x zur Laufzeit auch mal 0 sein kann, davon sollte man eigentlich > ausgehen. Ich mag eben kein "undefined behaviour". Ist doch eine Frage, wofür man es verwenden will. Wenn du mit x = 0 rechnen können musst, dann kannst du immer noch sowas machen:
1 | |
Gast
#1335552
@ Mark Brandis Ach so.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.