因为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
答案 0 :(得分:0)
#ifdef __cplusplus
extern "C
不是Tizen特定的。它的作用是“[make] C ++中的函数名称具有'C'链接(编译器不会破坏名称),以便客户端C代码可以使用'C'链接到(即使用)您的函数兼容的头文件,仅包含函数的声明。“(source)。
int OspMain(int argc, char* pArgv[])
OspMain
只是Tizen原生应用程序的入口点(即应用程序启动时操作系统调用的应用程序中的第一个功能),非常类似main
或WinMain
in其他操作系统/框架。
App
Execute
方法expects the arguments as a list of Strings
。因此OspMain
函数在调用Execute
方法之前负责构建该列表;从String
中的每个char*
创建argv
,并将Strings
放置在ArrayList
中(IList
的实现接口)。
OspMain
的返回类型为int
,但它从Execute
收到的结果代码的类型为result
,因此会将result
转换为int
{{1}}。如果你想了解更多关于它们的信息,那么关于C ++演员的主题就有plenty of questions。
最后,我认为很少有实例作为应用程序开发人员关注Entry文件。它是由IDE自动为您创建的,而不是您通常会更改的内容。