avr-gcc 如何将字符串放入程序中?

Posted

技术标签:

【中文标题】avr-gcc 如何将字符串放入程序中?【英文标题】:avr-gcc How to put strings in progmem? 【发布时间】:2021-08-25 15:03:39 【问题描述】:

我有疑问如何将字符串放入程序中?这是示例程序。

void ParAdd(uint8_t type, const char *ParName)
    #do something meaningful here


int main (void)
    ParAdd(11,  "Name1");
    ParAdd(22,  "Name2");
    ParAdd(30,  "Name3");

有没有办法将函数调用中的字符串参数声明为PROGMEM?我知道“经典”方式,例如:

char string_1[] PROGMEM = "String 1";
char string_2[] PROGMEM = "String 2";

..但就我而言,如果可能的话,我更喜欢单行。示例程序是 meninglles,但在实际情况下有许多参数和许多“ParAdd”调用。但找不到使用类似的解决方案:

ParAdd(11,  (PROGMEM) "Name1");

有人知道解决方案吗? arduino 中的 F() 宏之类的东西?

【问题讨论】:

【参考方案1】:

...因为解决方案如此简单而变得愚蠢。

ParAdd(11,  PSTR("Name1"));

是解决方案。

【讨论】:

以上是关于avr-gcc 如何将字符串放入程序中?的主要内容,如果未能解决你的问题,请参考以下文章

avr-gcc:如何将 __attribute__((address)) 与 EEMEM 一起使用?

如何将变量放入字符串中?

如何将函数的文档字符串放入变量中?

如何将空格字符放入 XML 中的字符串名称中?

如何从一行中删除某些单词,但将其余部分放入带有批处理的字符串/变量中?

如何在 avr-gcc 中定义定时器