[VC][Tips] 2005 express

▶ Performance gab between using ‘enum’ and “using ‘#define’ in Visual C++ 7.0
Environment : CPU: Intel 2.8G

Using enum:
    Number of enum items := 100,000 -> compiling takes very long time.
    Number of enum items := 10,000 -> very quick.
Using define
    Very quick even if number of defined items reaches 100,000.

Experimentally, if number of enum items are larger than specific threshold, compiling performance of VC++ 7.0 drops dramatically. So in this case, we would better to change ‘enum’ into ‘#define’.

▶ Order of finding ‘include directory’ in VC++ 7.0
“highest priority is directory where currently issued file is in.”.
For example, lets consider following directory structure.

directory : xxx/src
=> a.c, c.h
directory : xxx/inc
=> b.h, c.h

(Let’s assume that “xxx/inc” is added at “additional include directory”).
“xxx/inc/b.h” and “xxx/inc/c.h” is used to compile “a.c”. Even though compiler try to compile “a.c”, “b.h” is issued file during parsing “b.h”. And, “b.h” includes “c.h”. So “c.h” in the directory where “b.h” is in, is included, because currently issued file is “b.h”.

▶ Case that ‘.c’ file and ‘.cpp’ file whose basename are same, are in one VC Project in Visual 2005 Express C++.
For example, if there are ‘a.c’ and ‘a.cpp’ in one project, MSVC recognizes only ‘.cpp’ file (based on experimental result). (I think the reason is that default compiler of VC is ‘cpp’ compiler.)
So, even if we modify ‘a.c’ and build, nothing is compiled because MSVC keep it’s eyes on ‘a.cpp’ – it is not changed. (–> It’s MSVC’s bug!!)

▶ There is no way to compile one file with several different options in VC project. So we should use ‘command line’ to do this.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s