Keil STM32 C++混合編程要點__Linux

來源:互聯網
上載者:User
Keil STM32 C++混合編程要點

1. 檔案名稱必須是.CPP和.h
2. .h檔案中要增加如下代碼:

#ifndef __LEDTASK_H#define __LEDTASK_H#ifdef  __cplusplusextern "C" {#endif#include "stm32_led.h"void led1_task   (void *pdata);#ifdef  __cplusplus}  #endif#endif

3. 調用.cpp檔案中資源時(如類,函數等),那個檔案也必須是.cpp檔案。即.cpp檔案裡才能調用C++文法的程式
4. –C99要去掉

其實到最後,我是放棄了這種C++混合編程的,一開始非常想這樣做,這樣我的那部分C++代碼就可以無縫移植到MFC上了,後來Keil也編譯通過了,但是由於上述條件的束縛(第一條OK,第二條也OK,第3條有束縛,即別人想嵌入My Code,必須也要是cpp檔案,別人改完相應尾碼名-.cpp後,該檔案對應的標頭檔還有很繁瑣的增加第二條所述的代碼;第四條也有束縛,–C99有一個特性是,可以在代碼中定義變數,而無需在函數開頭定義,且可以初始化結構體,如下面的代碼片:

while(1) {    int key_value = Read_key();}
DeviceInfo_TypeDef tDeviceInfoMem = {    .mac_addr       = {0x84, 0x39, 0xBE, 0x90, 0x00, 0x00},    .ip_addr        = {10, 10, 2, 1},     .netmask        = {255, 255, 252, 0x00},                .gateway        = {10, 10, 3, 254},                   .projBaud       = 19200, };

當然也可以這樣(無需–C99支援):

DeviceInfo_TypeDef tDeviceInfoMem = {    {0x84, 0x39, 0xBE, 0x90, 0x00, 0x00},    {10, 10, 2, 1},                          {255, 255, 252, 0x00},                   {10, 10, 3, 254},                        19200, };

考慮到以上修改的代碼配量度,決定先不用C++混合編程啦

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.