尋找報關從X11 XDrawString,它是XDrawString如何不接受「const char *」?
int XDrawString(Display *display, Drawable d, GC gc,
int x, int y, char *string, int length);
怎麼來的第六參數的類型 「的char *」,而不是 「爲const char *」?繪製字符串是否需要修改它?我看過很多例子,人們通過不斷的字符串傳遞;那是不安全的?
尋找報關從X11 XDrawString,它是XDrawString如何不接受「const char *」?
int XDrawString(Display *display, Drawable d, GC gc,
int x, int y, char *string, int length);
怎麼來的第六參數的類型 「的char *」,而不是 「爲const char *」?繪製字符串是否需要修改它?我看過很多例子,人們通過不斷的字符串傳遞;那是不安全的?
因爲功能已經在const
之前,或者因爲設計API的人有麻煩保持。
我從來沒有見過任何暗示XDrawString修改傳遞給它的參數的東西。那些低級的X API非常古老,可以追溯到80年代中期。很可能人們在標記不斷變化的觀點方面不那麼嚴謹。
在我的兩個系統上(Mac OS X v10.4.11和Ubuntu與libx11-dev 2:1.1.5-2ubuntu1.1),我的X11頭文件聲明爲const
。從/usr/include/X11/Xlib.h
:
extern int XDrawString(
Display* /* display */,
Drawable /* d */,
GC /* gc */,
int /* x */,
int /* y */,
_Xconst char* /* string */,
int /* length */
);
而且_Xconst
是#define
倒是要在X11/Xfuncproto.h
const
。
這似乎表明它是爲了兼容性。 – 2009-06-14 20:39:15