Study for Embededd System


 *C言語 [#bf55a204]
 #contents
 
 **ビットフィールド [#m1836823]
 構造体や共用体のメンバを、ビット単位で宣言、使用できる
 #code(C){{
 #include <stdio.h>
 
 struct _xyz{
   unsigned char x : 1;  // 1bitのデータ
   unsigned char y : 3;  // 3bitのデータ
   unsigned char z : 2;  // 2bitのデータ
   char c;  // 1byte(8bit)のデータ
 };
 
 int main(void)
 {
   struct _xyz xyz = { 1, 5, 0, 'a' };
   printf( "sizeof=%d\n", sizeof(xyz) );
   printf( "x=%d y=%d z=%d c=%c\n", xyz.x, xyz.y, xyz.z, xyz.c );
   return 0;
 }
 }}
 実行結果
  sizeof=2
  x=1 y=5 z=0 c=a
 
 **__attribute__ [#y80c5ab2]
 
 gcc の C言語拡張機能で、変数や関数に属性を付与できる。
 
 |__attribute__( (__unused__) )|使用されなくてもコンパイラがワーニングを出さない|
 |__attribute__( (aligned(x)) )|アライメントをxに調整する|
 |__attribute__( (section("name")) )|リンク時にセクション"name"に配置する|
 |__attribute__( (packed) )|構造体や共用体で、メンバの隙間を開けずに詰めて配置する|
 
 使用例
 #code(C){{
 int function( int arg1, int arg2 __attribute__( (__unused__) ) )
 {
   return arg1 + 1;
   // arg2 を使用しなくても、コンパイル時に警告されない
 }
 }}
 
 **自動的に定義される定数 [#u49204fb]
 
 コンパイラによって、定義済の定数が存在する。主にデバッグ目的で使用する。
 
 |CENTER:定数|CENTER:意味|CENTER:型|
 |__FUNCTION__|関数名|文字列|
 |__FILE__|ファイル名|文字列|
 |__LINE__|行数|数値|
 |__DATE__|コンパイルした時の日付|文字列|
 |__TIME__|コンパイルした時の時刻|文字列|
 |__STDC__|ANSI-Cに準拠していると値: 1|数値|
 |__GLIBC__|glibcのバージョン|数値|
 
 使用例 test.c
 #code(C){{
 #include <stdio.h>
 
 int main(void)
 {
   printf("%s:%s:%d", __FUNCTION__, __FILE__, __LINE__);
   return 0;
 }
 }}
 実行結果
  main:test.c:5
 
 Gy7TxC  <a href="http://jnajmpidnmeq.com/">jnajmpidnmeq</a>, [url=http://nwnpzjfkuegf.com/]nwnpzjfkuegf[/url], [link=http://yrfatflbyqcp.com/]yrfatflbyqcp[/link], http://zknywcqblonh.com/
リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

yVoC[UNLIMIT1~] ECir|C Yahoo yV LINEf[^[z500~`I


z[y[W NWbgJ[h COiq O~yz COsI COze