Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: All
Mar 15, 2000

Remove Unneeded #Includes Directive From the Release Version

It's customary to use output statements as a debugging aid. For example, displaying the name of a function that is currently in scope or printing a variable's value on the screen. These statements are automatically removed from the release version of the application by macro magic. For example:

 
  void func()
  {
    int n;
    n = sqrt(n);
  #ifdef DEBUG // code below exists only in debug version
    cout <<"value of n: "<< n << endl;
  #endif
  }

Seemingly, the statements enclosed in #ifdef macros don't incur any overhead in the release version because the preprocessor removes them when the symbol DEBUG isn't defined. However, programmers often forget to enclose the #include directive within an #ifdef clause. The objects add a substantial amount of code to the program, increasing the executable's size and memory footprint by up to 200 KB under certain conditions. Therefore, remember to remove the #include directive if your app doesn't use any of the iostream objects. Alternatively, you can wrap the #include directive in an #ifdef clause:

 
  #ifdef DEBUG // only in debug mode
  #include  // not included in release version
  #endif
  int main()
  {
    func();
  }
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date