How would the equivalent C type be in D?
rempas
rempas at tutanota.com
Wed Mar 1 08:12:05 UTC 2023
I'm looking into
[this](https://www.x.org/releases/X11R7.7/doc/libxcb/tutorial/index.html) tutorial to learn XCB and I'm trying to write the code in D with betterC. In the section 9.1 (sorry, I cannot give a section link, the article does not give us this ability), I'm facing a problem and my program exits with the exit code: "-11". I suspect that this happens because I haven't translated the following code the right way:
```d
uint32_t value[1];
value[0] = screen.black_pixel;
xcb_create_gc(connection, black, win, mask, value);
```
I originally tried to translate this as:
```d
uint[1] value;
value[0] = screen.black_pixel;
xcb_create_gc(connection, black, win, mask, value);
```
But then, when I tried to compile the program, I got the
following error:
```
Error: function `headers.xcb_create_gc(xcb_connection_t* c, uint
cid, uint drawable, uint value_mask, const(void)* value_list)` is
not callable using argument types `(xcb_connection_t*, uint,
uint, uint, uint[1])`
src/draw.d(18,16): cannot pass argument `value` of type
`uint[1]` to parameter `const(void)* value_list`
```
So I thought of doing the following:
```d
uint* value;
value[0] = screen.black_pixel;
xcb_create_gc(connection, black, win, mask, value);
```
Now the program complies but I get the "-11" exit code. Another
thing I thought (which is probably the same thing under the hood
but done a different way):
```d
const(void)* value;
(cast(ubyte*)value)[0] = screen.black_pixel;
xcb_create_gc(connection, black, win, mask, value);
```
Same results. Any ideas?
More information about the Digitalmars-d-learn
mailing list