Visual C++ why does seperate thread not regonize globals/defines.

I have an application written in C++ using Visual C++ 2009. In this application I have a seperate 'watcher' thread that listens for messages targeted for this seperate thread. In my application I have a header file that let's call common.h. In this common.h file I have defined some globals and #defines that I want the thread to reconize. But when I run the application and put a break point inside of the seperate thread the globals or defines are not set to a value that I inialized them to. Will a seperate thread, even though in the same application, not reconize globals/defines, from an included file?

-Thanks
atomicgs12Asked:
Who is Participating?
 
sarabandeCommented:
if you need shared göobal variables you normally would use the volatile keyword in order to prevent the compiler from optimizing access.

if the thread code is in different cpp file than the code which sets the initial values to the shared variables, you may define the variable only in one (main) cpp and use extern keyword in other (thread) cpp file(s). otherwise the main thread and the worker thread would use their own instance of the variable but would not share.

an alternative to global variables is to use static class members.

Sara
0
 
Infinity08Commented:
You currently haven't given enough information to answer your question. You'll have to provides some specific code.

One guess : are your globals defined as static ?
0
 
atomicgs12Author Commented:
no globals defined as static more like: #define SKIP_THIS_CODE 1
0
Cloud Class® Course: CompTIA Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

 
Infinity08Commented:
As I said - that was a guess. I can't do anything more than guess, unless you provide actual code.
0
 
atomicgs12Author Commented:
The thread code is in the same cpp file. The #define is in an .h file that is included at the beginning of the cpp file, i.e. #include "Common.h". In Common.h the define is defined as
' #define SKIP_THIS_CODE 1'. SKIP_THIS_CODE is used in the watcher thread as:

#ifdef SKIP_THIS_CODE
     the code I want to run
#else
     unwanted code
#endif

in the case above the 'unwanted code' is always run. Can I NOT use the #define SKIP_THIS_CODE in the thread?

Thanks
0
 
atomicgs12Author Commented:
Found a slight programming error on my part but your suggestion did point me in the correct direction to get it working. Thanks
0
 
sarabandeCommented:
the #ifdef preprocessor means is an abbreviation of #if defined. that means regardless whether you define the macro as 1 or 0 it would be defined, means the condition is true, granted that the include statement of the header file where it is defined is above the #ifdef. the only way to make that reverse is to use #undef .

Sara
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.