![]() |
#31 |
Knight
|
-1 == 255? Maybe in byte-land, but what if you're using multi-byte character sets (Unicode)?
__________________
You read the scroll labeled NOBIMUS UPSCOTI... You are surrounded by a stasis field! The tengu tries to teleport, but fails! |
![]() |
![]() |
![]() |
#32 |
Angband Devteam member
Join Date: Aug 2008
Location: Philadelphia, PA, USA
Age: 42
Posts: 1,516
![]() |
In C, -1 has a two's complement binary representation as "1111111...." for whatever size integer you're talking about. If you cast it to (char) like Pete did, you end up with "11111111" in binary, which is 0xFF in hex, and 255 in decimal.
I think you're confused... in C the char datatype is always defined as one byte. If you want to represent a unicode character you'd use a different type. (char)-1 == (char)255 is invariant. |
![]() |
![]() |
![]() |
#33 | |
NPPAngband Maintainer
Join Date: Dec 2008
Location: Stat Gain, Angband
Posts: 926
![]() |
Quote:
Does anyone have any recomendations for a good, free C compiler if LCC-WIN is the problem? My biggest limitation is that I am not a true programmer who could work off of a C:\ prompt. It would have to be a windows environment..... |
|
![]() |
![]() |
![]() |
#34 |
Knight
|
If you use mingw/msys, you can just use the makefiles out of the box as if you were in Linux... if you're looking for an actual IDE, there's Visual C++ Express; I successfully got angband to compile in it after a bit of finagling, and I can send you the project files necessary if you'd like!
__________________
You read the scroll labeled NOBIMUS UPSCOTI... You are surrounded by a stasis field! The tengu tries to teleport, but fails! |
![]() |
![]() |
![]() |
#35 |
Prophet
Join Date: Apr 2007
Location: Seattle, WA
Posts: 6,726
Donated: $40
![]() |
@jeff--
just about everyone uses gcc (MINGW on Windows) for compiling angband, though lcc is supposed to work too. I agree that redefines of bool are a much worse sign. (And why there's a #define for bool in the first place is beyond me. It's a standard data type in C99 and later.) |
![]() |
![]() |
![]() |
#36 | |
Angband Devteam member
Join Date: Aug 2008
Location: Philadelphia, PA, USA
Age: 42
Posts: 1,516
![]() |
Quote:
It's worth asking Takk about this, I think. |
|
![]() |
![]() |
![]() |
#37 | |
NPPAngband Maintainer
Join Date: Dec 2008
Location: Stat Gain, Angband
Posts: 926
![]() |
Quote:
/* C++ defines its own bool type, so we hack around it */ #undef bool #define bool bool_hack Then a couple lines later, there is this: /* * Use a real bool type where possible */ #ifdef HAVE_STDBOOL_H #include <stdbool.h> #define TRUE true #define FALSE false #else /* Use a char otherwise */ typedef char bool; and around line 50 of the same file, there is this....about STDBOOL... /* * Using C99, assume we have stdint and stdbool */ # if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L # define HAVE_STDINT_H # define HAVE_STDBOOL_H # endif and at that point my little brain explodes..... I have no clue what is going on there. I assume it is an attempt to standardize the definition of bool for certain operating systems and compilers. But I doubt I could even understand it if somebody tried to explain it to me. |
|
![]() |
![]() |
![]() |
#38 |
NPPAngband Maintainer
Join Date: Dec 2008
Location: Stat Gain, Angband
Posts: 926
![]() |
OK, gonig back to basics, what files are needed to compile Angband version 3.1.2 v2 on windows. If I get that going with LCC_win32, I can see what warnings come up.
I assume: angband.rc in the src directory: the files attack.c through load.c. Is load-old.c needed? main-win.c files option.c through z-virt.c now, for the src/subdirectories: doc - nothing? gtk - nothing? lcc - nothing? monster - melee1, melee2, monster1, monster 2 nds - nothing? object - identify.c through randart.c osx - nothing player - calcs.c, timed.c, and util.c (note here LCC_win fails becaule util.c has the same name as hte file in the src directory. All files have to have different names regardless of which directory they are in) tests - nothing? There are three files, smaple.c, z-file.c, and z-tets.c. Are these experimental, or should they be included? win - readdib.c I would experiment with this, but the feature to delete a *.c file from a makefile in LCC_win is broken. I can add them, but if I need to delete a file I have to start all over. |
![]() |
![]() |
![]() |
#39 |
Prophet
Join Date: Apr 2007
Location: Seattle, WA
Posts: 6,726
Donated: $40
![]() |
|
![]() |
![]() |
![]() |
#40 |
NPPAngband Maintainer
Join Date: Dec 2008
Location: Stat Gain, Angband
Posts: 926
![]() |
I understand the problem now. It isn't the constant, but the fact that the Angband code places that code into a signed char variable. It was warning me that I was putting a value of 255 into a variable with a range of -127 to 128. When I changed the varible key in the structure ui_event_data (ui-event.h) to an unsigned character my compiler stopped complaining. Is that variable intended to hold values from -127 to -1?
|
![]() |
![]() |
![]() |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Trying to understand Ranger playing mechanics | dormouse | Vanilla | 5 | December 15, 2009 11:43 |
Angband Code Interface to GUI | meeshoo | Vanilla | 50 | February 3, 2009 17:18 |
I finally understand how diving quicker can be "safer" | Wraitheist | Vanilla | 13 | September 19, 2008 17:25 |
strange C code in Angband (am I reading this right?) | will_asher | Idle chatter | 3 | February 4, 2008 09:07 |
Angband source branches vs trac | ctate | Vanilla | 1 | July 14, 2007 11:43 |