エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
ここにツイート内容が記載されます https://b.hatena.ne.jp/URLはspanで囲んでください
Twitterで共有ONにすると、次回以降このダイアログを飛ばしてTwitterに遷移します
はじめに 「コンパイラって、関数のインライン展開を何段までやってくれるんでしょうか?これってトリビ... はじめに 「コンパイラって、関数のインライン展開を何段までやってくれるんでしょうか?これってトリビアになりませんか?」 このトリビアの種、つまりこういうことになります。 「コンパイラに多段呼び出しの関数を食わせてインライン展開させた時、☓☓段で力尽きる」 実際に調べてみた。 ソース 関数の多段呼び出しをするコードを吐くRubyコードを書いた。 num = ARGV[0].to_i puts <<EOS # include <stdio.h> int func0(int a){ return a + 1; } EOS num.times do |i| puts "int func#{i+1}(int a){return func#{i}(a);}" end puts <<EOS int main(void){ int a = 0; printf("%d\\n",func#{num}(a));