某日, 寫了一個簡單的內聯匯編腳本, 死活編譯不過去, 和原版的匯編一點一點對比, 基本上都一樣了, 可就是別人寫的可以編譯過去, 我寫的就是編譯不過去. 匯編腳本如下: [cpp] #undef BYTE_COPY_FWD #define BYTE_COPY_FWD (dst, src, len) \ do { \ asm volatile( \ "cld\n" \ "rep\n" \ "movsb" : \ "=D" (dst), "=S" (src) : \ "0" (dst), "1" (src), "c" (len) : \ "memory"); \ } while(0) 只好祭出beyond compare2 發現有如下不一致的地方: 第一行是別人的, 第二行是我的 發現宏名字和()之間多了一個空格, 去掉之, 編譯通過! 之前的報錯信息如下, 希望這裡的報錯信息對你有用. memcpy.cpp:40: warning: left-hand operand of comma has no effect memcpy.cpp:40: warning: right-hand operand of comma has no effect memcpy.cpp:40: error: expected `;' before ‘do’