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.
.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.
.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.
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 
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:
// [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.