2011年5月21日 星期六

在很久很久以前 string literal 是不能直接串接的

作者: softwind (software everywhere) 看板: C_and_CPP
標題: Re: [閒聊] 字串陣列各元素間少打逗號
時間: Sat May 21 01:55:59 2011

※ 引述《Arton0306 (Ar藤)》之銘言:
: 事情是這樣的
: 我原本有個char二維陣列 如下
: const char cmdName[][30] = {"Conn", "Send", "A15E", "Enter", "Ex",
:                             "r slp", "rwake", "printRx" , "a song", "All",
:                            };
: 後來要改裡面的字 如下
: const char cmdName[][30] = {"Conn", "Send", "A15E", "Enter", "Send2"
:                             "r slp", "rwake", "printRx" , "a song", "All",
:                            };
: 結果compile 沒error 也沒warning
: 就讓我過了
: 因為以為是別的地方造成錯誤
: 於是花了我將近2個小時在debug...

這個在 Expert C Programming 裡面有講到 我忘了細項

事情是這樣的 在很久很久以前 string literal 是不能直接串接的

so 那個時候 你要表達一段 大篇幅的文字要這樣寫

char *pStr = "1234567890\
        0987654321\
        abcdefghijk\
        lmnopqrst";

但是... 要表達串接, \後面 不能有任何空格 or 符號

不然compiler會誤認 \(space) 其實是要 (space)的意思

然後就錯了~

到了ANSI C的時候 把string literal 串接 納入標準

so 上面的string可以寫成

char *pStr = "1234567890" // "之後 想空 想Tab 隨你...
        "0987654321"
        "abcdefghijk"
        "lmnopqrst";

.. 然後 我就忘記了


--

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.26.182.77
推 littleshan:也只有C這種沒有字串運算的語言才需要出此下策了...     05/21 03:23

沒有留言:

張貼留言

您好.本資料庫並非第一手資料.如果你有對文章作者的詢問,意見與需求,請自行找尋文章作者並提供意見,謝謝.