STM32(C)无法一次性将字符串文字和变量传递给函数

mrzz3bfm  于 2023-01-12  发布在  其他
关注(0)|答案(1)|浏览(151)

我有一个函数,它有一个指向某个数据的指针。

void TxData(uint8_t *outString)
{
     // Do something.
}

目前,我将字符串和变量(所有ASCII数据)混合传递给函数。

TxData((uint8_t *) "Setting");
TxData((uint8_t *) Info1);
TxData((uint8_t *) "=");
TxData((uint8_t *) Info2);
TxData((uint8_t *) "\r");

这一切都工作,但我想知道我是否可以做到这一点,在一行代码(即类似于concatenate,所以我只调用TxData一次)。我不想做任何会影响性能的事情,因为这是一个相当低端的微控制器(所以不希望字符串被复制),但希望整理代码。

fhg3lkii

fhg3lkii1#

低端微控制器(因此不希望字符串被复制)
然后保持原样,你也可以写一个接受char *数组的函数。

const char * const toprint[] = {"Setting" ,Info1, "=", Info2, "\r", NULL};

void myTcData(const char * const ptr[])
{
    while(*ptr)
    { 
          TxData(*ptr);
          ptr++;
    }
}

它不会浪费任何宝贵的RAM存储器,表格将保存在闪存中。
我还将更改TxData的原型

void TxData(const void *ptr)
{
    const uint8_t *outstring = ptr;
    /* .... */
}

相关问题