[C++] Add cplusplus component

This commit is contained in:
Bernard Xiong 2014-11-01 09:09:21 +08:00
parent 0797e54f3f
commit b84123b0b4
4 changed files with 66 additions and 0 deletions

View File

@ -0,0 +1,13 @@
# C++ support for RT-Thread #
This is the C++ component in RT-Thread RTOS. In order to support C++ language, this component
implement a basic environment, such as new/delete operators.
Because RT-Thread RTOS is used in embedded system mostly, there are some rules for C++ applications:
1. DOES NOT use exception.
2. DOES NOT use Run-Time Type Information (RTTI).
3. Template is discouraged and it easily causes code text large.
4. Static class variables are discouraged. The time and place to call their constructor function could not be precisely controlled and make multi-threaded programming a nightmare.
5. Multiple inheritance is strongly discouraged, as it can cause intolerable confusion.
*NOTE*: For armcc compiler, the libc must be enable.

View File

@ -0,0 +1,11 @@
# RT-Thread building script for component
from building import *
cwd = GetCurrentDir()
src = Glob('*.cpp')
CPPPATH = [cwd]
group = DefineGroup('CPlusPlus', src, depend = ['RT_USING_CPLUSPLUS'], CPPPATH = CPPPATH)
Return('group')

View File

@ -0,0 +1,27 @@
#include <rtthread.h>
#include "crt.h"
void *operator new(size_t size)
{
return rt_malloc(size);
}
void *operator new[](size_t size)
{
return rt_malloc(size);
}
void operator delete(void *ptr)
{
rt_free(ptr);
}
void operator delete[] (void *ptr)
{
return rt_free(ptr);
}
void __cxa_pure_virtual(void)
{
rt_kprintf("Illegal to call a pure virtual function.\n");
}

View File

@ -0,0 +1,15 @@
#ifndef CRT_H_
#define CRT_H_
#include <inttypes.h>
#include <stdlib.h>
void *operator new(size_t size);
void *operator new[](size_t size);
void operator delete(void * ptr);
void operator delete[] (void *ptr);
extern "C" void __cxa_pure_virtual(void);
#endif