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 特定的。它的作用是“[使] C++ 中的函数名具有‘C’链接(编译器不会破坏名称),以便客户端 C 代码可以使用‘C’兼容的头文件链接到(即使用)你的函数它只包含你的函数的声明。” 来源)。


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

OspMain只是 Tizen 本机应用程序的入口点(即应用程序启动时操作系统调用的应用程序中的第一个函数),与其他操作系统/框架非常main相似WinMain


  • 参数

App Execute方法期望参数为Strings. 因此,该OspMain函数负责在调用该Execute方法之前构建该列表;aString是从每个char*in创建的argv,并将它们Strings放在 an 中ArrayList(这是IList接口的实现)。


  • 返回值

OspMainis的返回类型int,但它接收的结果代码Execute是类型的result,因此它将 转换resultint。如果您想了解更多关于 C++ 类型转换的信息,有很多关于 C++ 类型转换的问题。


最后,我认为作为应用程序开发人员,您必须关心条目文件的情况很少。它是由 IDE 自动为您创建的,而不是您通常会更改的内容。

于 2013-06-26T06:07:54.073 回答