<string> bloating compile time

Started by
6 comments, last by gimp 23 years ago
I use std::string all over my code,the down dise is that it bloats my compile time. Is there a way of typedef''ing it declaring it without having to include the string header? Like you can do this: class CFile; If you don''t want to include the file the CFile is in. Many thanks Chris
Chris Brodie
Advertisement
I don''t think it''s possible. It''s already a typedef.
Are you using pre-compilered headers? put #include&ltstring> in StfAfx.h

I've never done a forward reference with a template, lemme know how it works if you fgure it out.

class std::string; ??

Magmai Kai Holmlor
- The disgruntled & disillusioned


Edited by - Magmai Kai Holmlor on March 18, 2001 8:57:14 PM
- The trade-off between price and quality does not exist in Japan. Rather, the idea that high quality brings on cost reduction is widely accepted.-- Tajima & Matsubara
Should be ok to use a forward reference, if you do it properly. Might be a bit of a hassle though.

Check out <iosfwd> to see how they made forward declarations for the iostream classes, and maybe that''ll give you a hint at how to do it for std::strings.
I have a more general question along this same subject:
Is there any way to tell what parts of your program are causing the largest compile times? We have several projects here that have grown over the months and now take a significant time to compile; however, we can''t really track down what code is causing it. Any hints?
quote:Original post by Stoffel
I have a more general question along this same subject:
Is there any way to tell what parts of your program are causing the largest compile times? We have several projects here that have grown over the months and now take a significant time to compile; however, we can''t really track down what code is causing it. Any hints?


That''s an interesting idea. VC++ VBscript allows events handling when a build occurs/ends. That might be useful when combined with a custom build step (AddCustomBuildStepToFile).

Let me know if you come up with anything.
quote:Original post by Kylotan
Should be ok to use a forward reference, if you do it properly. Might be a bit of a hassle though.

Check out to see how they made forward declarations for the iostream classes, and maybe that''ll give you a hint at how to do it for std::strings.


You have a solution???

The iosfwd seems to redefine a template class with the traits and allocators and do a typedef of the iostream.
class std::string doersn''t work

error C2242: typedef name cannot follow class/struct/union

Stoffel, if your application is broken up in to different libraries each sections compile time can be measured by appending this to your command line for msdev:

/Y3

That''ll give you output that looks like this:

Compiling...
Main Win32.cpp
Application.cpp
Spawn Time 0:02.5
Creating library...
Spawn Time 0:00.0

Application.lib - 0 error(s), 0 warning(s)
Build Time 0:02.8


Kylotan, I had a look in there, your right it is a bit ugly, I''m not sure if I''m up to this task.

Precompiled headers look good and have been getting a good wrap on the Algorithms mailing list recently too. I spent a good hour today trying to get them working however and didn''t get anywhere.

What I did:
1) Create STL.h, STL.cpp
2) added #includes for vector, map, etc, etc,..
3) Added Include for Stl.h in to stl.cpp.
4) Set compiler option for this file to "Create pch though" : stl.h
5) Set project to "use pch through" : stl.h
6) Replace a few #include ''s with #include "Stl.h"

This seems to produce a huge number of errors in files that dont even use stl.h. Is this technique wrong? Did I miss something?

Thanks
Chris Brodie

This topic is closed to new replies.

Advertisement