瀏覽代碼

fix cpp thread class error

tyustli 5 年之前
父節點
當前提交
a559179e6f
共有 3 個文件被更改,包括 20 次插入3 次删除
  1. 4 3
      components/cplusplus/Thread.cpp
  2. 8 0
      components/utilities/utest/utest.h
  3. 8 0
      components/utilities/utest/utest_assert.h

+ 4 - 3
components/cplusplus/Thread.cpp

@@ -14,7 +14,7 @@ Thread::Thread(rt_uint32_t stack_size,
                rt_uint8_t  priority,
                rt_uint32_t tick,
                const char *name)
-: _entry(RT_NULL), _param(RT_NULL), started(false)
+    : _entry(RT_NULL), _param(RT_NULL), started(false)
 {
     rt_event_init(&_event, name, 0);
 
@@ -32,12 +32,12 @@ Thread::Thread(void (*entry)(void *p),
                rt_uint8_t  priority,
                rt_uint32_t tick,
                const char *name)
-: _entry(RT_NULL), _param(p), started(false)
+    : _entry(entry), _param(p), started(false)
 {
     rt_event_init(&_event, name, 0);
 
     _thread = rt_thread_create(name,
-                               (thread_func_t)func,
+                               (thread_func_t)entry,
                                this,
                                stack_size,
                                priority,
@@ -46,6 +46,7 @@ Thread::Thread(void (*entry)(void *p),
 
 Thread::~Thread()
 {
+	rt_event_detach(&_event);
     rt_thread_delete(_thread);
 }
 

+ 8 - 0
components/utilities/utest/utest.h

@@ -15,6 +15,10 @@
 #include "utest_log.h"
 #include "utest_assert.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /**
  * utest_error
  * 
@@ -157,4 +161,8 @@ utest_t utest_handle_get(void);
     utest_unit_run(test_unit_func, #test_unit_func);                           \
     if(utest_handle_get()->failed_num != 0) return;
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* __UTEST_H__ */

+ 8 - 0
components/utilities/utest/utest_assert.h

@@ -14,6 +14,10 @@
 #include "utest.h"
 #include <rtthread.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* No need for the user to use this function directly */
 void utest_assert(int value, const char *file, int line, const char *func, const char *msg);
 
@@ -61,4 +65,8 @@ void utest_assert_buf(const char *a, const char *b, rt_size_t sz, rt_bool_t equa
 #define uassert_in_range(value, min, max)     __utest_assert(((value >= min) && (value <= max)), "(" #value ") not in range("#min","#max")") 
 #define uassert_not_in_range(value, min, max) __utest_assert(!((value >= min) && (value <= max)), "(" #value ") in range("#min","#max")")
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* __UTEST_ASSERT_H__ */