A 回答 (6件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
基本的には「コンパイルするときに定義が見えてないとインラインにしようがない」ので, その「実体」のあるソースファイルをどうにかしてとりこまないとダメですね. コンパイラによっては「強制的にインクルードするファイル」を指定することもできたような気がします.
もちろんあなたの使っているコンパイラでそういうことができるかどうかは知りません. そもそもあなたがどのコンパイラを使っているかわかんないし.
No.5
- 回答日時:
>そのインライン関数の実態をソースファイルに置き、コンパイルオプションの
組み合わせによって、別ファイルからコールすることは可能なのでしょうか?
「ソースファイルを、インクルードファイルのように使う」しか、方法はありません。
「それ以外の方法が不可能」なのは「どういう機械語コードが生成されるか?」を考えれば一目瞭然です。
インライン関数は、関数の中身が、そのまま呼んだ場所に展開されます。
インライン関数を2度呼び出すと、機械語コードは
インライン関数と無関係な命令コード
呼び出し前の命令コード
関数の中身
呼び出し後の命令コード
呼び出し前の命令コード
関数の中身
呼び出し後の命令コード
インライン関数と無関係な命令コード
のように生成されます。
「関数の中身」と「呼び出し後の命令コード」の間には「呼び出し元へ帰れ」と言う命令コードは存在しません。
なので、この部分を「外部(別ファイル)から呼ぶ」のは不可能です。
関数のポインタを使用して呼ぶと、それは最早インライン関数の呼び出しではなく、通常の関数呼び出しです。インライン展開された関数は呼ばれず、実体が別の関数が呼ばれます。
無理矢理に、別ファイルでインライン展開させたいなら、
-----main.cpp-----
#ifndef FUNC_INLINE
#include ほげほげ
#include ほげほげ
(略)
#endif /* FUNC_INLINE */
_inline関数の実体定義
{
中身
}
#ifndef FUNC_INLINE
(略)
int main(int ac,char *av[])
{
中身
_inline関数の呼び出し
中身
}
(略)
#endif /* FUNC_INLINE */
-----sub.cpp-----
#include ほげほげ
#include ほげほげ
#define FUNC_INLINE
#include "main.cpp" /*かなり強引*/
void sub(void)
{
中身
_inline関数の呼び出し
中身
}
(略)
と言う方法で。これなら、sub.cppでの呼び出し部分もインライン展開されます。かなり強引な方法ですけどね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラム内から、MIDIファイルの一部分だけを再生する方法 1 2023/02/15 11:08
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- その他(Microsoft Office) 【スプレドシート】IMPORTRANGE関数とSUMIFSの組み合わせ 1 2023/03/05 18:17
- Windows 10 Windows10で、フォルダにあるすべてのファイルを、下層フォルダも含め一つの階層へ配置し直したい 3 2022/05/31 09:50
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- Visual Basic(VBA) vbaサブフォルダーをワイルドカードで取得したい 2 2022/11/15 08:04
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
- Visual Basic(VBA) VBAでWorkbook.addの使い方 3 2023/02/01 11:58
- C言語・C++・C# pythonで外部のファイルを読み込む際のエラー 2 2022/04/12 19:22
- Excel(エクセル) Excelについての質問です。 ファイルAに関数が入っていて、それはファイルBを開いていると反映され 1 2022/06/03 18:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
jwsファイルが開けない!
-
csvファイルを開かずに文字を検...
-
CSVファイルへの保存の際、デー...
-
String Table リソースを条件に...
-
C#で、フォームのタイトル名を...
-
iniファイルに追記がしたいです。
-
バッチで118項目のCSVを処理し...
-
Excel マクロ VBA 特定の文字列...
-
iniファイルをexeファイルと同...
-
テキストファイルの最終行を削...
-
フレームワークについて
-
XMLファイルの表示について
-
ASP .NETでファイル選択ダイア...
-
エクセルVBA Dir途中で止まる
-
fopenできる上限の変更
-
UNICODE文字が書き込めるWritep...
-
「VBS」の「MsgBox」につ...
-
画像読み込み時のOutOfMemory
-
インクルードファイルとインラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
ファイル名の先頭にアンダース...
-
CSVファイルへの保存の際、デー...
-
ファイルを記録してあるセクタ...
-
テキストファイルの最終行を削...
-
SGファイルって何ですか?
-
ドラッグアンドドロップでファ...
-
分割コンパイルの#defineについて
-
VBに、Cのincludeのようなもの...
-
fopenできる上限の変更
-
グローバル変数のよくない使い...
-
ファイルの結合
-
大きいサイズのテキストファイ...
-
iniファイルに追記がしたいです。
-
バッチで118項目のCSVを処理し...
-
ハッシュの計算時間について
-
C言語のfopenについて教えてく...
-
Javascript で INI の読み書き
-
Excelマクロでの再読込み方法
おすすめ情報