i have a main program with some include files, and i want to debug this files as well as the main program and use breakpoinds. Anyone knows how to do this??? Thanks
Javier, "Include" or header files should typically contain only declarations, while the definitions (that actually generate code) should be in C modules. Generally, having it the other way around is a bad idea as you would attempt to generate code or allocate storage whenever one of those header files is included by a C file. Correcting this philosophical problem will solve your debugging problem as well.
Well, thanks. One more question, how do i use several C files in the same proyect??? Thanks, javier
Read the uVision Getting Started Guide - it's all in there. I suggest you work through the example projects in it. This will give you a proper introduction to how the tools work & how to use them - rather than just blindly diving into the deep end!
Javier, Assuming you're using uVision2 in a somewhat default layout, right-click "Source Group 1" in the "files" tab in the left hand pane in the IDE. Then pick "Add files to Group" and select the other C files you would like to include in the project.
OK thanks
I did what you said, but i have a new problem Several of my C files uses the same global variables declared on main, but the compiler tells me:
Error 202: "var_name" undefined identifier
Javier, At the top of all the files OTHER than main that use these variables, you must put an "extern" declaration to let the linker know where to find these variables. For instance, if you had an integer variable named "var1" in main.c that you wanted to use in foo.c, then somewhere at the top of foo.c you would put:
extern int var1
whoops... throw a ";" after the var1 in my last message.
Thanks a lot. I have done some C programming, but it's the first time i try to debug the include files....
Know i get an error ERROR L104 : MULTIPLE PUBLIC DEFINITIONS HOw do i solve this. I use the global variables in several c files besides main
Javier, You need to DEFINE the variable in only ONE C file and DECLARE them as extern in the other files. For instance, if you define a global variable named "bar" in every C file you have and you want them all to refer to the same location in memory, then you'd put
unsigned char bar;
extern unsigned char bar;
At the top of all the files OTHER than main that use these variables, you must put an "extern" declaration No. As I keep pointing out, pretty much every occurence of the word 'extern' in a .c file is a design error. You should have this 'extern' in a header file instead, and #include that in exactly those source files that refer to it, including the one that holds the definition of the variable in question.
Hans, While I understand your philosophy, keep in mind that Javier started off this thread by asking how he could STEP THROUGH CODE included in a header file. I'm just going for simplicity here at the moment. He'll learn the theology of things the hard way at some later date, no doubt.
first time i try to debug the include files.... Just to make this extra clear: the problem is this that there's not supposed to be anything in an include file that would need to be debugged (in the sense that you need to search for errors in there although the compiler and linker already accepted the program). You really need to brush up your basic knowledge of C. I suggest the comp.lang.c FAQ for starters, or possibly one of the textbooks recommended by that FAQ.
I had already done exactly what you said, but the problem isn't with the compiler, but with the linker the full message is:
linking.. ***ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: variable MODULE: Timer.obj(Timer) (this is my c file)