Benutzer-Werkzeuge

Webseiten-Werkzeuge


c

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
c [2015/05/19 09:18] – [Links] ollic [2025/03/01 07:55] (aktuell) – [Links] olli
Zeile 11: Zeile 11:
 </code> </code>
  
-Der Typ kann auch explizit mit den Suffixen "u(unsigned)  und "l(long) bzw. "ll(long long) gewählt werden. +Der Typ kann auch explizit mit den Suffixen ''u'' (unsigned)  und ''l'' (long) bzw. ''ll'' (long long) gewählt werden.
  
-===== Einschränkungen gegenüber C++ ===== + 
-  keine Defaultparametervoid foo(int a, int b<del>=42</del>) +===== Mehrere Defines logisch verknüpfen ===== 
-  keine überladenen Funktionenvoid foo(int); <del>void foo(char);</del+Um mehrere ''define''-Anweisungen logisch mit UND und ODER zu verknüpfen muss man statt ''#ifdef'' die Langform ''#if defined'' verwenden: 
-  * die Länge von Arrays kann keine const Variable sein: const int length = 12; <del>int matrix[length];</del> C99 und gnu90 unterstützen dies. Es werden dann VLA (variable length arrays) auf dem Stack angelegt.+<code cpp> 
 +#if defined DEFINE_1 || defined DEFINE_2 
 +//do something 
 +#endif 
 +</code> 
 + 
 +===== Einschränkungen von C gegenüber C++ ===== 
 +^Bemerkung ^C ^C%%++%%^ 
 +|keine Defaultparameter| <code c>void foo_a(int a){foo_ab(a, 42)}; 
 +void foo_ab(int a, int b)</code>|<code c++>void foo(int a, int b=42)</code| 
 +|keine überladenen Funktionen| <code c>void foo_int(int);  
 +void foo_char(char);</code>| <code c++>void foo(int);  
 +void foo(char);</code>| 
 +|Arraylänge kann keine const Variable sein ((C99 und gnu90 unterstützen dies jedoch. Es werden dann VLA (variable length arrays) auf dem Stack angelegt.)) | <code c>#define length 12;  
 +int matrix[length];</code>|<code c++>const int length = 12; 
 +int matrix[length];</code>
 + 
 + 
 +===== Unterseiten ===== 
 +{{indexmenu>c}}
 ===== Links ===== ===== Links =====
   * [[http://ewiki.e-dschungel.de/software/avr-gcc|Hinweise speziell zum AVR-GCC]]   * [[http://ewiki.e-dschungel.de/software/avr-gcc|Hinweise speziell zum AVR-GCC]]
   * [[http://blog.regehr.org/archives/28|Nine ways to break your systems code using volatile]]   * [[http://blog.regehr.org/archives/28|Nine ways to break your systems code using volatile]]
   * [[http://www.github.com/abcminiuser/avr-tutorials/blob/master/ManagingLargeProjects/Output/ManagingLargeProjects.pdf?raw=true|C Code modularisieren]]   * [[http://www.github.com/abcminiuser/avr-tutorials/blob/master/ManagingLargeProjects/Output/ManagingLargeProjects.pdf?raw=true|C Code modularisieren]]
-  * [[http://www.soundsoftware.ac.uk/c-pitfall-unsigned|Pitfalls in C and C++: Unsigned types]] 
   * [[http://www.geeksforgeeks.org/understanding-extern-keyword-in-c/|Understanding extern keyword in C]]   * [[http://www.geeksforgeeks.org/understanding-extern-keyword-in-c/|Understanding extern keyword in C]]
   * [[http://graphics.stanford.edu/~seander/bithacks.html|Bit Twiddling]]   * [[http://graphics.stanford.edu/~seander/bithacks.html|Bit Twiddling]]
   * [[http://cdecl.org/|Übersetzung von Array und Pointerschreibweise "C Gibberish <-> English"]]   * [[http://cdecl.org/|Übersetzung von Array und Pointerschreibweise "C Gibberish <-> English"]]
 +  * [[https://web.archive.org/web/20200926082017/https://indi-project.org/docs/2016-ccs.pdf|Twice the Bits, Twice the Trouble: Vulnerabilities Induced by Migrating to 64-Bit Platforms (via Wayback Machine)]] 
 +  * [[https://godbolt.org/|Compiler-Explorer]]
 +  * [[https://developers.redhat.com/blog/2014/10/16/gcc-undefined-behavior-sanitizer-ubsan/|GCC Undefined Behavior Sanitizer – ubsan]]
 +
 +==== Signed/Unsigned ====
 +  * [[http://www.soundsoftware.ac.uk/c-pitfall-unsigned|Pitfalls in C and C++: Unsigned types]]
 +  * [[http://embeddedgurus.com/stack-overflow/2009/08/a-tutorial-on-signed-and-unsigned-integers/|A tutorial on signed and unsigned integers]]
 +  * [[https://stackoverflow.com/questions/18195715/why-is-unsigned-integer-overflow-defined-behavior-but-signed-integer-overflow-is/18195756#18195756|Why is unsigned integer overflow defined behavior but signed on integer overflow isn't]]
 +  * [[https://www.airs.com/blog/archives/120|Signed Overflow (Airs – Ian Lance Taylor)]]
 +
 +==== X-Macros ====
 +  * [[http://www.drdobbs.com/cpp/the-x-macro/228700289|The New C: X Macros]]
 +  * Reduce C language coding errors with X macros
 +        * [[http://www.embedded.com/design/programming-languages-and-tools/4403953/C-language-coding-errors-with-X-macros-Part-1|Teil 1]]
 +        * [[http://www.embedded.com/design/programming-languages-and-tools/4405283/Reduce-C--language-coding-errors-with-X-macros---Part-2|Teil 2]]
 +        * [[http://www.embedded.com/design/programming-languages-and-tools/4408127/2/Reduce-C-language-coding-errors-with-X-macros--Part-3|Teil 3]]
 +   * [[https://blog.brush.co.nz/2009/08/xmacros/|Code generation with X-Macros in C]] 
 +
c.1432019904.txt.gz · Zuletzt geändert: 2015/05/19 09:18 von olli