0

Tizen はまだあまり普及していないため、Tizen アプリケーション エントリ ファイルの説明が見つかりませんでした。次のコード例に基づいて、Tizen エントリ ファイルの特定の部分 (メイン関数の戻り値、#ifdef、args...) を説明できる人はいますか?

#include <new>
#include "MultipointTouch.h"

using namespace Tizen::Base;
using namespace Tizen::Base::Collection;

#ifdef __cplusplus
extern "C"
{
#endif // __cplusplus

_EXPORT_ int OspMain(int argc, char* pArgv[]);

/**
 * The entry function of Tizen C++ application called by the operating system.
 */
int
OspMain(int argc, char* pArgv[])
{
    AppLog("Application started.");
    ArrayList args;
    args.Construct();
    for (int i = 0; i < argc; i++)
    {
        args.Add(*(new (std::nothrow) String(pArgv[i])));
    }

    result r = Tizen::App::Application::Execute(MultipointTouch::CreateInstance, &args);
    TryLog(r == E_SUCCESS, "[%s] Application execution failed", GetErrorMessage(r));

    args.RemoveAll(true);
    AppLog("Application finished.");
    return static_cast<int>(r);
}
#ifdef __cplusplus
}
#endif // __cplusplus
4

1 に答える 1

0
  • #ifdef __cplusplus
    extern "C

Tizen固有ではありません。それが行うことは、「[make] C++ の関数名に 'C' リンケージを持たせる (コンパイラーは名前をマングルしない) ことで、クライアント C コードが 'C' 互換ヘッダー ファイルを使用して関数にリンク (つまり、使用) できるようにすることです。関数の宣言だけが含まれています。」ソース)。


  • int OspMain(int argc, char* pArgv[])

OspMainは、Tizen ネイティブ アプリケーション (つまり、アプリの起動時に OS が呼び出すアプリ内の最初の関数) のエントリ ポイントであり、他の OS/フレームワークと同様mainです。WinMain


  • 引数

このApp Executeメソッドは、引数を のリストとして想定していますStrings。そのため、関数はメソッドOspMainを呼び出す前にそのリストを作成します。ExecuteaStringは のそれぞれから作成されchar*argvそれらは an (インターフェースの実装) にStrings配置されます。ArrayListIList


  • 戻り値

の戻り値の型はOspMainですがint、受け取る結果コードExecuteの型resultは であるため、 を にキャストresultintます。C++ キャストについて詳しく知りたい場合は、C++ キャストに関する質問がたくさんあります。


結局のところ、アプリ開発者として Entry ファイルを気にしなければならないケースはほとんどないと思います。IDE によって自動的に作成され、通常変更するものではありません。

于 2013-06-26T06:07:54.073 に答える