目次→コンパイラ→
コマンド・ラインを使う→
Compiler Option: -entry←オリジナル・サイト
目次→
コンパイラ・オプション一覧→
Compiler Option: -entry←オリジナル・サイト
暗黙のユーザ主関数の公開エクスポート名を上書きします。
構文:
-entry < name >
パラメタ:
name
暗黙のユーザーの主関数の公開でエクスポートされた名前を上書きするカスタム名
記述:
-entry コンパイラオプションは、暗黙のユーザー主関数(起動コードとして fbc が自動的に生成)の公開エクスポートシンボルの名前を変更します。
これは、起動コードと暗黙のユーザー主に影響します。
これは、モジュールが主モジュールであるかどうかによっても影響を受けます。
デフォルトでは、fbcは、実行時の起動システムコードで必要とされるように、主モジュールに公開でエクスポートされた「主」シンボルを定義します。
現在、fbcによる「主」シンボルの使用を上書きする方法は、常に別々にコンパイルしてリンクする以外にありません。
進行:
-
カスタム主関数名は、(基本)主関数と互換性を持たせるために、次のシグネチャ(同じパラメータ型、同じリターン型、同じ呼び出し規約)だけで宣言する必要があります:
'' internally the implicit main function is now named "custom_main"
Declare Function custom_main CDecl Alias "custom_main" ( ByVal argc As Long, ByVal argv As ZString Ptr Ptr ) As Long
-
リンカと起動コードを満たすために、(基本)主関数も提供する必要があります。
これは、次の最小コード例に示すように、別のライブラリやフレームワーク、C、ASM、または fb 言語で定義されるかもしれません:
Function main CDecl Alias "main" ( ByVal argc As Long, ByVal argv As ZString Ptr Ptr ) As Long
'' .....
'' call the custom main
Return custom_main( argc, argv )
End Function
-
そして、
-entry custom_main オプションを使ってコンパイルします。
注意:
この機能は開発中であり、将来的に変更される可能性があります(文書フォーラムの
Compiler Option: -entry を参照してください)。
これに対処するより良い方法があるかもしれません:明示的に「主」を指定できるようなコンパイラ・オプション。
例:
fb 言語だけの最小限のコードを表示しようとするプログラム(option_entry.bas)例です:
'' option_entry.bas:
'' - 暗黙のユーザー主関数の代替エントリポイントとして、
'' 代替の名前付き主関数を示すデモンストレーション
'' - コンパイルとリンクを別々のステップで行うこともできます。
'' compile: $ fbc -c -m option_entry option_entry.bas -entry custom_main
'' compile: $ fbc option_entry.o
'' OR
'' compile: $ fbc option_entry.bas -entry custom_main
'' 内部的には、暗黙の主関数の名前は「custom_main」になります。
Declare Function custom_main CDecl Alias "custom_main" ( ByVal argc As Long, ByVal argv As ZString Ptr Ptr ) As Long
'' しかし、リンカーとスタートアップコードを満足させるためには、まだ main() 関数が必要です。
'' - これは、他のライブラリやフレームワークで定義されているかもしれません。
'' - そうではないので、デモのためにここで定義します。
Function main CDecl Alias "main" ( ByVal argc As Long, ByVal argv As ZString Ptr Ptr ) As Long
'' デモのためにカスタムメインを呼び出すだけです
Return custom_main( argc, argv )
End Function
'' ---------------------------------
'' START OF USER'S IMPLICIT MAIN
'' 内部的にこれは「custom_main」という名前で、
'' カスタムフレームワークによって自動的に呼び出されます
Print "hello"
Sleep
'' END OF USER'S IMPLICIT MAIN
'' ---------------------------------
バージョン:
参照: