繁体   English   中英

XDrawString为什么不带“ const char *”?

[英]How come XDrawString doesn't take “const char *”?

从X11看XDrawString的声明,它是

int XDrawString(Display *display, Drawable d, GC gc,
                int x, int y, char *string, int length);

为什么第六个参数是类型“ char *”而不是“ const char *”? 绘制字符串是否需要对其进行修改? 我已经看到了很多例子,这些例子中人们传递恒定的字符串。 那不安全吗?

这是因为该函数自const之前就已经存在,或者是因为设计API的人难以跟上。

在我的两个系统上(Mac OS X v10.4.11和带有libx11-dev 2:1.1.5-2ubuntu1.1的Ubuntu),我的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 */
);

并且_XconstX11/Xfuncproto.h#defineconst

我从未见过有人建议XDrawString修改传递给它的参数。 那些低级X API很老,可以追溯到80年代中期。 那时人们很可能不那么严格地标出持续不断的争论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM