C言語なら俺に聞け 153at TECHC言語なら俺に聞け 153 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト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を増やすしかないですか? 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch