Using an uninitialized structure
B. Schulte
Aldoric at gmx.de
Mon Sep 3 09:34:38 PDT 2007
Regan Heath Wrote:
> B. Schulte wrote:
> > Regan Heath Wrote:
> >
> >> Where is the definition of the CHAR_INFO structure? Have you defined it
> >> in your code? eg.
> >>
> >> import std.c.windows.windows;
> >>
> >> extern(C)
> >> {
> >> struct CHAR_INFO {
> >> union _Char {
> >> WCHAR UnicodeChar;
> >> CHAR AsciiChar;
> >> }
> >> _Char Char;
> >> WORD Attributes;
> >> }
> >> alias CHAR_INFO* PCHAR_INFO;
> >> }
> >>
> >> void main()
> >> {
> >> CHAR_INFO buffer[];
> >> buffer.length = 100;
> >> foreach( inout CHAR_INFO ci; buffer ) { ci.Char.AsciiChar = ' ';
> >> ci.Attributes=7; }
> >> }
> >>
> >> Regan
> >
> > Well, the CHAR_INFO structure is stored in the win32.wincon file. There was something I took from dsource to use the winAPI methods.
> >
> > I didn't want to write in orginal files to fix a problem. I thought about fixing the problem somewhere else. (Don't modify the wincon.d)
> >
> > However, it still doesn't work.
> > Error 42: Symbol Undefined _D5win326wincon9CHAR_INFO6__initZ
> >
> >
> > There must be some way to use uninitialized variables :(
>
> There is, but I don't believe it has anything to do with the error
> you're getting. :)
>
> You are missing a symbol, the symbol you are missing is mangled in such
> a way that it is clear that it is a D symbol, which means you have
> defined CHAR_INFO as a D struct, instead of using extern (C) as I have
> shown you above.
>
> What dsource project is win32.wincon in? Perhaps CHAR_INFO isn't
> declared as extern (C) in there...
>
> FYI, you can allocate an array of CHAR_INFO structures without
> initialising like this:
>
> CHAR_INFO[500] abuffer = void;
>
> this is a fixed length array however, perhaps not what you want?
>
>
> Regan
Well, it really wasn't declared as extern(C). But I inserted it and declared it as extern(C). Don't know why, but it still don't work.
Here is the dsource project:
http://dsource.org/projects/core32
More information about the Digitalmars-d
mailing list