找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4179|回復(fù): 5
收起左側(cè)

[已解決]51單片機(jī)串口發(fā)送字符串問題,顯示錯(cuò)誤warning C214: 'Argument'

[復(fù)制鏈接]
ID:776619 發(fā)表于 2022-5-30 20:12 | 顯示全部樓層 |閱讀模式
MAIN.C(170): warning C214: 'Argument': conversion: pointer to non-pointer
程序部分如下:
{
........
.........
uart_send("hello world!",sizeof("hello world!"));
......;
......;
}
uart_send(unsigned char *string123,int num)
{
for (n=0;n<num;n++)
   {
    SBUF=*string123++;
    while (!TI);
    TI=0;
    }


請問為什么會出現(xiàn)這問題,如何解決???
回復(fù)

使用道具 舉報(bào)

ID:924942 發(fā)表于 2022-5-30 20:23 來自手機(jī) | 顯示全部樓層
string123形參是個(gè)指針,你應(yīng)該傳遞字符串首地址,而不是自符串
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2022-5-30 20:43 | 顯示全部樓層
uart_send(unsigned char *string123,int num)改成
uart_send(const char *string123,int num)

其實(shí)你的代碼沒必要加num
  1. uart_send(const char *string123)
  2. {
  3. for (;;)
  4.    {
  5.     if(*string123==0)break;
  6.     SBUF=*string123++;
  7.     while (!TI);
  8.     TI=0;
  9.     }
  10. }
復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

ID:776619 發(fā)表于 2022-5-30 22:11 | 顯示全部樓層
Hephaestus 發(fā)表于 2022-5-30 20:43
uart_send(unsigned char *string123,int num)改成
uart_send(const char *string123,int num)

讓我試試看,如果不用NUM,那它括號里的東西也會節(jié)省ROM空間是不是?
回復(fù)

使用道具 舉報(bào)

ID:776619 發(fā)表于 2022-5-30 22:40 | 顯示全部樓層
Hephaestus 發(fā)表于 2022-5-30 20:43
uart_send(unsigned char *string123,int num)改成
uart_send(const char *string123,int num)

我錯(cuò)了,你寫的也不能通過,同樣報(bào)警但能編譯過。后來看看原來是我在文件頭定義那里string前面指針那個(gè)星沒寫。補(bǔ)上后我寫的也可以通過了。程序別的問題還有,但這個(gè)問題是解決了。
回復(fù)

使用道具 舉報(bào)

ID:776619 發(fā)表于 2022-5-30 22:43 | 顯示全部樓層
sgql 發(fā)表于 2022-5-30 20:23
string123形參是個(gè)指針,你應(yīng)該傳遞字符串首地址,而不是自符串

寫字符串獲得的也只是首地址。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表