多年沒用C語言了。近日用R語言編程時因有太多循環,只好用C寫個擴展模塊,一時竟不知怎么動手了。在多種語言中,單引號和雙引號是可以等同使用的。因鍵入雙引號要比單引號多按一SHIFT鍵,我偏好單引號。在用printf顯示字符串, 我就自然地用上了單引號來定義格式串,哪知用gcc編譯時竟出錯了:
[xxia@xxq 4Mike]$ gcc pvc.c
pvc.c:179:9: warning: multi-character character constant
pvc.c: In function ‘pv_concord_more’:
pvc.c:179: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast
pvc.c:184:9: warning: multi-character character constant
pvc.c:184: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast
pvc.c:229:9: warning: multi-character character constant
pvc.c:229: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast
pvc.c:232:9: warning: multi-character character constant
pvc.c:232: warning: passing argument 1 of ‘printf’ makes pointer from integer without a cast
[xxia@xxq 4Mike]$
改回雙引號后,才順利編譯。
實在不記得C語言中單雙引號的區別了,不知是當初沒學好,還是搞忘了,抑或是gcc的一個特點?