Dinosaur wrote:So logic dictates that it knows the location of both instances of the repeated declaration.
I don't think that the compiler works that way. Probably it goes through all the files included without memory of what was defined where. I only says: "Hey, I have seen this before".
To locate the first conflicting define, it has to:
a) go though all the previous processed files again or
b) keep some kind of dictionary / catalog of what came from where
Like collecting postage stamps. You might find an identical one, but do know still how you got the first one (of the 2 identical)?
(my thoughts, I know almost nothing about compilers and stamp collecting)
Edit: What might help to locate the problem is the
-showincludes option. Looks like this:
Code: Select all
fbc64 -showincludes miner_04.bas
miner_04.bas
| /media/badidea/data/Projects/FreeBASIC/_code_lib_new_/screen_v02.bi
| | /usr/local/include/freebasic/fbgfx.bi
| | /media/badidea/data/Projects/FreeBASIC/_code_lib_new_/colors_v01.bi
| | /media/badidea/data/Projects/FreeBASIC/_code_lib_new_/int2d_v02.bi
| /media/badidea/data/Projects/FreeBASIC/_code_lib_new_/keyboard_v01.bi
| | (/usr/local/include/freebasic/fbgfx.bi)
| /media/badidea/data/Projects/FreeBASIC/_code_lib_new_/image_v02.bi
| | /usr/local/include/freebasic/file.bi
| | /media/badidea/data/Projects/FreeBASIC/_code_lib_new_/file_func_v01.bi
| | /media/badidea/data/Projects/FreeBASIC/_code_lib_new_/bmp_v01.bi
| | (/media/badidea/data/Projects/FreeBASIC/_code_lib_new_/int2d_v02.bi)
| /media/badidea/data/Projects/FreeBASIC/_code_lib_new_/image_buffer_v01.bi
| | /usr/local/include/freebasic/dir.bi
| | (/media/badidea/data/Projects/FreeBASIC/_code_lib_new_/image_v02.bi)
| /media/badidea/data/Projects/FreeBASIC/_code_lib_new_/string_v01.bi
| (/media/badidea/data/Projects/FreeBASIC/_code_lib_new_/int2d_v02.bi)
| /media/badidea/data/Projects/FreeBASIC/_code_lib_new_/sgl2d_v02.bi
| /media/badidea/data/Projects/FreeBASIC/_code_lib_new_/event_timer_v01.bi
| /media/badidea/data/Projects/FreeBASIC/_code_lib_new_/loop_timer_v01.bi
| /media/badidea/data/Projects/FreeBASIC/_code_lib_new_/int2d_sgl2d_v01.bi
| | (/media/badidea/data/Projects/FreeBASIC/_code_lib_new_/int2d_v02.bi)
| | (/media/badidea/data/Projects/FreeBASIC/_code_lib_new_/sgl2d_v02.bi)
| inc_game/image_enum.bi
| inc_game/map.bi
| inc_game/miner.bi
etc.