RTT源碼分析之main函數改寫測試-1

 

/**
 * @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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章