Khi tạo các project mới, các project tự động thêm vào file stdafx.h và stdafx.cpp. Nội dung 2 file này hầu như chẳng có gì, nhưng đôi khi gây ra các lỗi khi biên dịch rất khó chịu. Thật ra, nếu ta hiểu được tác dụng của file này thì ta sẽ tránh được các lỗi điên đầu do nó gây ra.
‘stdafx’ là file header được dùng trong kĩ thuật ‘precompiled header’ để làm tăng tốc độ khi biên dịch chương trình. Nó chứa các file header không bị thay đổi và được dùng trong các file *.cpp khác của chương trình. Để dễ hình dung, ta xem xét ví dụ sau: bạn viết một chương trình win32 gồm 10 file *.cpp. Giả định là bạn dùng các thư viện hỗ trợ như: windows.h, string, vector, và một số thư viện khác nữa. Khi đó ta sẽ đặt chỉ thị ‘#include’ trong file ‘stdafx.h’. Sau đó, khi VC++ compiler thực hiện build project của bạn, điều đầu tiên được thực hiện là tiền xử lý mọi thứ trong stdafx.cpp (chỉ gồm chỉ thị ‘#include stdafx.h’) và lưu các thông tin đã xử lý vào precompiled header file. Khi biên dịch các file *.cpp còn lại, compiler không cần xử lý các header nữa, nó chỉ cần dùng các thông tin đã lưu trong file precompiled header để xử lý tiếp. Làm như vậy sẽ giúp cho quá trình biên dịch nhanh hơn đáng kể, đặc biệt các project lớn với hàng trăm file *.cpp và *.h.
Để sử dụng precompiled header, các thư viện sẽ được include trong file ‘stdafx.h’. Các file *.cpp khác ta phải khai báo #include ‘stdafx.h’ ở đầu file. Nếu ta không include ‘stdafx.h’ vào các file *.cpp, ta sẽ gặp phải lỗi sau khi biên dịch : fatal error C1010: unexpected end of file while looking for precompiled header directive

Advertisements