/**
* @file main.h
* The prototype of the application's ORO_main
*
*/
#include "startstop.h"
#include "../Logger.hpp"
/**
* Forward declare this wrapper around the user code.
* @see ORO_main
*/
int ORO_main_impl(int,char**);
/**
* Declare the function 'int ORO_main(int argc, char **argv)' instead
* of 'int main(int argc, char **argv)' such that the Real-Time
* Toolkit can setup the OS environment, prior to executing user
* code. Using ORO_main is optional, but in some RTOS'es, you'll be
* required to call __os_init() and __os_exit() instead when not using
* ORO_main.
*
* @see __os_init(), __os_exit()
*/
#define ORO_main \
main( int argc, char **argv) { \
int res = -1; \
std::string location(argv[0]); location += "::main()"; \
__os_init(argc, argv); { \
RTT::Logger::In in(location.c_str()); \
if ( __os_checkException(argc,argv) ) { \
try { \
res = ORO_main_impl(argc, argv); \
} catch( std::exception& arg ) \
{ \
__os_printException(argv[0], arg); \
} catch( ... ) \
{ \
__os_printFailure(argv[0]); \
} \
} else { \
res = ORO_main_impl(argc, argv); \
} \
} __os_exit(); \
return res; \
} \
int ORO_main_impl
2简化改写main入口测试 代码
#include <stdio.h>
int ORO_main_impl(int,char**);
/**
* Declare the function 'int ORO_main(int argc, char **argv)' instead
* of 'int main(int argc, char **argv)' such that the Real-Time
* Toolkit can setup the OS environment, prior to executing user
* code. Using ORO_main is optional, but in some RTOS'es, you'll be
* required to call __os_init() and __os_exit() instead when not using
* ORO_main.
*
* @see __os_init(), __os_exit()
*/
#define ORO_main \
main( int argc, char **argv) { \
int res = -1; \
res = ORO_main_impl(argc, argv); \
return res; \
} \
int ORO_main_impl
int ORO_main(int argc, char** argv)
{
printf("Hello World!\n");
return 0;
}