On Sun, 25 Apr 2004 22:37:44 +0200, Leopold Toetsch wrote:

>> Your problem seems to be related to the %.str: %.c inference rule, which
>> nmake doesn't understand.  For nmake, this should read
>> .c.str:
>>         $(PERL) build_tools\c2str.pl $< > $@
> That's already in CVS ;)

Great. :-)

> 
>> I am currently stuck with some CONST_STRING issues, for which VC 7.1
>> complains with:
>> src\interpreter.c(1309) : warning C4013: '_CONST_STRING_' undefined;
>> assuming extern returning int
> 
> Is that already with your proposed change to the Makefile rule above or
> before?

After, so I already got the interpreter.str file.  I guess VC gets confused
with the _CONST_STRING(i, __LINE__) thingy, where __LINE__ doesn't get
expanded, and the whole results in _CONST_STRING_ instead of
_CONST_STRING_1309, etc.

Now, here comes the weird stuff: If I ask only for the preprocessed source
(add option /E to CFLAGS, then "nmake src\interpreter.obj"), this (from
interpreter.c)
    sc = CONST_STRING(interpreter, "_interpreter");
    VTABLE_setprop(interpreter, user_data, sc, interp_pmc);
    sc = CONST_STRING(interpreter, "_sub");
    VTABLE_setprop(interpreter, user_data, sc, sub);
gets expanded to
    sc = (interpreter)->const_cstring_table[1];
    (user_data)->vtable->setprop(interpreter, user_data, sc, interp_pmc);
    sc = (interpreter)->const_cstring_table[2];
    (user_data)->vtable->setprop(interpreter, user_data, sc, sub);
which seems to be The Right Thing.

So, I guess either the compiler or I am missing something cruciual here.

Ron

Reply via email to