C言語なら俺に聞け 153 at TECH
[2ch|▼Menu]
[1からを表示]
50:デフォルトの名無しさん
19/09/18 12:47:21.47 1Vhu13ZT0.net
BNFとyaccのお勉強から

51:デフォルトの名無しさん
19/09/19 15:34:03.81 yCvdPLl+M.net
#define ARR_NAME(n) arr##n
int arr0 [] = {0,0,0};
int arr1 [] = {1,1,1};
int* select_arr(int i){
return ARR_NAME(i);
}
これはどうしてコンパイルエラーになりますか?
ちなみにreturn ARR_NAME(0)だと正しく動きます。

52:デフォルトの名無しさん
19/09/19 16:38:05.33 1k0/HGmS0.net
タイミングの問題だ
#defineはコンパイル前に解釈されるが
関数仮引数の値は実行時に渡される
実行時とはコンパイル〜リンクまで全て終わった後の話だ
だから関数仮引数の値を#defineで置き換えることができない

53:さまよえる蟻人間
19/09/19 17:34:18.54 fzYUHnaEd.net
arriという変数はない。プリプロセッサでは変数の中身までは見られない。

54:デフォルトの名無しさん
19/09/19 18:13:33.75 yCvdPLl+M.net
分かりやすかったです。ありがとう。
この機能の代替として良き方法はありますか?配列のdimを増やすしかないですか?

55:さまよえる蟻人間
19/09/19 18:22:24.66 fzYUHnaEd.net
次元を増やすのがベストだろう。

56:デフォルトの名無しさん
19/09/19 18:23:38.47 QG4rugRZ0.net
配列変数名はコンパイル時には分かっているのだから
その配列のアドレスを格納したポインタ配列を用意してやる

57:デフォルトの名無しさん
19/09/19 18:24:58.88 Hv2f/JNH0.net
>>55
これに1票。

58:デフォルトの名無しさん
19/09/20 15:15:19.52 X5/vL2CD0.net
                            __、
                iー'゙゙゙゙''''ー-,/^´  ゙';
                |      ゙ゝ....‐  .}
                !           |,
                   i____________......r'".'''゙ヽ  . ..,,、
                ,,. -/        `'ー  |      .' 、
             ,..-'"  l゙          __.. -''′     ./
        . ,/     .`''''〜- ....---''''"゛        ,/
       /.,,                           ,,..r'"
         `''ー、,、                 _,,,-'"  `!、
               /'r‐、          ,/´ /゙゙',    ヽ
            / レ'゙ ´゙リ´ . `^^゙゙゙゙゙゙厂j  .! │    . l
           /  |  .l.      丿/ / . /      !
            l  !  .,,....--ー'''''''″ /  .| (、     . !
         _  .ィ‐¨゙゙'广゛ ......    ./  ,ノ.l.  `'ィ ..,,_/
     ..-‐'"゛  'l_゙'ーノ`' ..........,,_ .,, -"  / │   .!   ゙''''-.
   .i''i       ヽ、          /  .!    !
   ,)イ      : ..,,,,,>u;;;;,、.__ _,,,.. /    |    "
  / . 、          !  .`             |
     !,                     ,!
     ."                        ゙

59:デフォルトの名無しさん
19/09/20 17:51:25.98 /93Uxf6sM.net
それは増やさなくていいから


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

1705日前に更新/17 KB
担当:undef