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