Apa "stdafx.h" digunakan untuk di Visual Studio?

Sebuah file bernama stdafx.h secara otomatis dihasilkan ketika saya memulai sebuah proyek baru di Visual Studio 2010. Saya perlu untuk membuat cross-platform C++ perpustakaan, jadi saya don't/can't menggunakan ini file header.

Apa stdafx.h digunakan untuk? Itu OK bahwa aku hanya menghapus file header?

Mengomentari pertanyaan (3)
Larutan

Semua C++ compiler memiliki satu kinerja yang serius masalah untuk berurusan dengan. Mengkompilasi kode C++ lebih panjang, proses yang lambat.

Kompilasi header yang disertakan di atas C++ file adalah sangat panjang, proses yang lambat. Kompilasi besar struktur header yang merupakan bagian dari Windows API dan lainnya besar perpustakaan API adalah sangat*, sangat yang lama, proses yang lambat. Harus melakukan lebih, dan lebih, dan lebih untuk setiap Cpp sumber file adalah lonceng kematian.

Ini tidak unik untuk Windows tapi masalah lama yang dihadapi oleh semua compiler yang harus mengkompilasi melawan API seperti Windows.

Microsoft penyusun dapat memperbaiki masalah ini dengan trik sederhana yang disebut precompiled header. Trik ini cukup licin: meskipun setiap CPP file dapat berpotensi dan secara hukum memberikan sligthly arti yang berbeda untuk rantai file header yang disertakan di atas masing-masing Cpp file (oleh hal-hal seperti memiliki berbagai macro #define'd di muka meliputi, atau termasuk header dalam urutan yang berbeda), yang paling sering tidak terjadi. Sebagian besar waktu, kita memiliki puluhan atau ratusan file termasuk, tetapi mereka semua dimaksudkan untuk memiliki makna yang sama bagi semua Cpp file yang disusun dalam aplikasi anda.

Compiler dapat membuat penghematan waktu yang sangat besar jika itu doesn't harus mulai menyusun setiap Cpp file ditambah puluhan meliputi benar-benar dari awal setiap kali.

Trik terdiri dari menunjuk khusus header file sebagai titik awal dari semua kompilasi rantai, disebut 'precompiled header' file, yang biasanya adalah sebuah file yang bernama stdafx.h hanya untuk alasan historis.

Hanya daftar semua besar besar header untuk anda Api di stdafx.h file, dalam urutan yang tepat, dan kemudian jalankan masing-masing CPP file di atas dengan sebuah #include "stdafx.h", sebelum setiap konten yang bermakna (hanya tentang satu-satunya hal yang diperbolehkan sebelum komentar).

Dalam kondisi seperti itu, bukannya mulai dari awal, compiler mulai menyusun dari yang telah disimpan hasil dari kompilasi semuanya di stdafx.jam.

Saya don't percaya bahwa trik ini adalah unik untuk Microsoft compiler, saya juga tidak berpikir itu adalah pembangunan yang asli.

Untuk Microsoft compiler, pengaturan yang mengontrol menggunakan precompiled header dikendalikan oleh argumen baris perintah untuk compiler: /Yu "stdafx.h". Seperti yang dapat anda bayangkan, penggunaan stdafx.h nama file adalah hanya sebuah konvensi; anda dapat mengubah nama jika anda begitu ingin.

Di Visual Studio 2010, pengaturan ini dikendalikan dari GUI via mengklik Kanan pada CPP Proyek, memilih 'Sifat' dan menavigasi ke "Konfigurasi Properti\C/C++\Precompiled Header". Untuk versi lain dari Visual Studio, lokasi di GUI akan berbeda.

Perhatikan bahwa jika anda menonaktifkan precompiled header (atau menjalankan proyek anda melalui sebuah alat yang doesn't mendukung mereka), itu doesn't membuat program ilegal; itu hanya berarti bahwa alat anda akan mengkompilasi semuanya dari awal setiap kali.

Jika anda membuat perpustakaan dengan Windows tidak ketergantungan, anda dapat dengan mudah komentar atau menghapus #termasuk dari stdafx.h file. Ada tidak perlu untuk menghapus file per se, tapi yang jelas anda dapat melakukannya juga, dengan menonaktifkan precompile header pengaturan di atas.

Komentar (16)

It's "precompiled header file" - setiap header anda termasuk dalam stdafx.h pra-olahan untuk menghemat waktu selama kompilasi berikutnya. Anda dapat membaca lebih lanjut tentang hal itu di sini di MSDN.

Jika anda're membangun sebuah aplikasi cross-platform, periksa "proyek Kosong" ketika membuat proyek anda dan Visual Studio won't menempatkan setiap file di dalam proyek anda.

Komentar (2)

"Stdafx.h" adalah precompiled header.Ini termasuk file untuk sistem standar seperti file dan untuk proyek-spesifik termasuk file-file yang sering digunakan tetapi jarang berubah.yang mengurangi waktu kompilasi dan tidak Perlu Pengolahan.

Precompiled Header stdafx.jam ini pada dasarnya digunakan dalam Microsoft Visual Studio untuk membiarkan kompiler tahu file-file yang pernah disusun dan tidak perlu compile dari awal. Anda dapat membaca lebih lanjut tentang hal itu

http://www.cplusplus.com/articles/1TUq5Di1/

https://docs.microsoft.com/en-us/cpp/ide/precompiled-header-files?view=vs-2017

Komentar (0)

Aku hanya berlari ke diri saya sendiri karena saya'm mencoba untuk membuat diriku telanjang-tulang kerangka tetapi mulai dengan membuat new Win32 pilihan Program di Visual Studio 2017. "stdafx.h" adalah tidak perlu dan harus dihapus. Kemudian anda dapat menghapus bodoh "stdafx.h" dan "stdafx.cpp" yang ada di Solution Explorer serta file dari proyek anda. Dalam hal ini's place, anda'akan perlu untuk menempatkan

#include 

sebaliknya.

Komentar (0)