2009-06-14 6 views
1

X11からXDrawStringの宣言を見て、それは第六引数は代わりに "のconst char型*" の "のchar *" と入力でどのように来るどのようにXDrawStringは "const char *"を使用しませんか?

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

のですか?文字列を描くにはそれを修正する必要がありますか?私は人々が一定の文字列で渡す多くの例を見てきました。それは危険ですか?

答えて

5

constより前の関数が原因であったか、またはAPIを設計したユーザーが問題を抱えていることが原因です。

1

私は、XDrawStringが渡された引数を変更することは何も見たことがありません。これらの低レベルのX APIは、80年代半ばまでの非常に古いものです。当時のように、人々は一定の議論をマークするのに厳格ではなかった可能性が非常に高い。

2

私のシステム(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#defineX11/Xfuncproto.hconstするD」です。

+2

これは互換性のためであると思われます。 –

関連する問題