# All those files in a Visual C++ project

**URL:** <https://boards.straightdope.com/t/all-those-files-in-a-visual-c-project/244010>\
**Category:** Factual Questions\
**Created:** [May 7, 2004, 2:25pm UTC](https://boards.straightdope.com/t/all-those-files-in-a-visual-c-project/244010 "2004-05-07T14:25:46Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Small\_Clanger](https://avatars.discourse-cdn.com/v4/letter/s/9fc348/32.png) [@Small\_Clanger](https://boards.straightdope.com/u/Small_Clanger)\
**Post date:** [May 7, 2004, 2:25pm UTC](https://boards.straightdope.com/t/all-those-files-in-a-visual-c-project/244010/1 "2004-05-07T14:25:46Z")

</div>

Tell us people what are they?  
.mak and .obj OK obvious enough but what about  
.idb  
.pch  
.plg  
.dsp  
.lis  
.opt  
.dsw  
.ncb - and there are more! What the flipping heck are all these things?

I’m a stranger to Visual C++\*\*\*\*\* but I’ve used C# .net and it seems to get by with far fewer config files, and in Unix all we have is a make file, what gives?

\*\*\*\*\*and intend to remain so but I have to compile some C programs for Windows occasionally.

---

<div class="post-metadata">

**Author:** ![cmkeller](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/cmkeller/32/118_2.png) [@cmkeller](https://boards.straightdope.com/u/cmkeller)\
**Post date:** [May 7, 2004, 2:52pm UTC](https://boards.straightdope.com/t/all-those-files-in-a-visual-c-project/244010/2 "2004-05-07T14:52:59Z")

</div>

.dsp is the project settings - has a list of all the source/header/resource files, the folders they’re organized into, and any settings attached to the project.

.dsw is workspace settings - list of all the projects in a workspace, and any dependence linkages between them and stuff.

.pch is pre-compiled header. You can speed up build time if instead of always linking with the header source code, you pre-compile the header and let the compiler build off of that.

The others I’ve seen but don’t know their exact purpose.

---

<div class="post-metadata">

**Author:** ![larsenmtl](https://avatars.discourse-cdn.com/v4/letter/l/d78d45/32.png) [@larsenmtl](https://boards.straightdope.com/u/larsenmtl)\
**Post date:** [May 7, 2004, 3:05pm UTC](https://boards.straightdope.com/t/all-those-files-in-a-visual-c-project/244010/3 "2004-05-07T15:05:23Z")

</div>

.idb -\> Developer Intermediate File  
.pch -\> C PreCompiled Header  
.plg -\> Developer Studio Build Log  
.dsp -\> Developer Studio Project  
.lis -\> Compiler Listing File  
.opt -\> Developer Studio File Workspace Options  
.dsw -\> Visual Studio Workspace  
.ncb -\> no compile browser file (hold Intellisense information, I believe)

Go, microsoft.

---

<div class="post-metadata">

**Author:** ![Small\_Clanger](https://avatars.discourse-cdn.com/v4/letter/s/9fc348/32.png) [@Small\_Clanger](https://boards.straightdope.com/u/Small_Clanger)\
**Post date:** [May 7, 2004, 3:34pm UTC](https://boards.straightdope.com/t/all-those-files-in-a-visual-c-project/244010/4 "2004-05-07T15:34:47Z")

</div>

> [@larsenmtl](#):
>
> .idb -\> Developer Intermediate File

If it’s an intermidiate file why is it not removed after compile/build is finished? Is there a “clean out this project except for the source files because you’re gobbling all my disk space” option? I think I know the answer to that one.

And **lars** please tell me you didn’t reel that list off from memory 🙂

---

<div class="post-metadata">

**Author:** ![AmbushBug](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/ambushbug/32/4600_2.png) [@AmbushBug](https://boards.straightdope.com/u/AmbushBug)\
**Post date:** [May 7, 2004, 8:20pm UTC](https://boards.straightdope.com/t/all-those-files-in-a-visual-c-project/244010/5 "2004-05-07T20:20:22Z")

</div>

I don’t worry about it; I w’ve written several command-line windows utilities for various things at work and I just put the source code into the source control system.

My file headers look something like:

```auto

// [utility].cpp : Utility Description here
//
// Copyright 2001-2004 The Company, Inc.
//
//
// My Name
//
// Instructions for maintenance:
// Create a Microsoft VC++ 6.0 'Hello World'-type Win32 Console application named '[utility]'. Replace the
// pre-fab [utility].CPP file with this one; select REBUILD ALL to do up the precompiled headers.

```

So, I don’t care what all the other files are; I can easily re-create the project later if I follow my own instructions - and I don’t have to worry that I’m putting unnecessary files into the source control system, or that I’ll forget some file, or that some binary I checked in won’t work right on some other coder’s system, or the source system will check out built things read-only and it’ll break the VC++ compile/link, etc. etc.
