掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.7633

マクロコードとinline 関数の区別は?
投稿者---古い初心者(2007/07/02 15:12:30)


こんにちは
ちょっと古い話かもしれないが、マクロコードとinline 関数の区別は
なんでしょうか。両方ともコードをソースファイルに展開し、引数に関するスタック操作を省くということですね。
パフォマンス上の差はあるのでしょうか。

ご存知の方宜しくお願い致します。





この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:マクロコードとinline 関数の区別は? 7634 YuO 2007/07/02 16:46:04


No.7634

Re:マクロコードとinline 関数の区別は?
投稿者---YuO(2007/07/02 16:46:04)


>ちょっと古い話かもしれないが、マクロコードとinline 関数の区別は
>なんでしょうか。両方ともコードをソースファイルに展開し、引数に関するスタック操作を省くということですね。

マクロは必ず展開されます。
また,コンパイラではなくプリプロセッサによって解析・展開されます。

それに対して,inlineはregisterと同じくコンパイラへのヒントに過ぎません。
そして,コンパイラによって解析されます。
# 再帰関数であっても,コンパイラが賢く,再帰回数が定数に依存するなら展開されるかもしれません。


基本的に,inlineの使える環境下において (つまりはC++とかC99),
インライン展開のみを目的としたマクロは書く必要はないでしょう。
# 特にC++ではtemplateも使えるため,コードに展開することを目的としたマクロは不要になってくる。



この投稿にコメントする

削除パスワード

No.7635

Re:マクロコードとinline 関数の区別は?
投稿者---古い初心者(2007/07/02 17:13:32)


YuO様
丁寧なご教授有難うございます。

>基本的に,inlineの使える環境下において (つまりはC++とかC99),
>インライン展開のみを目的としたマクロは書く必要はないでしょう。
そうですか。
いまも短いコードならマクロ、長いコードならinlineを使っていますが
やはり無意味ですね (-/-:




この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧





掲示板提供:(有)リアル・インテグリティ