Selama Anda menulis kode dengan cara portabel (tidak menggunakan fungsi khusus OS/kompiler seperti windows.h
atau ekstensi kompiler tertentu) dan menggunakan pustaka portabel yang harus dikompilasi dengan Visual studio dan GCC.
Masalahnya adalah meskipun keduanya bekerja, mereka melakukannya sedikit berbeda. Sebagian besar itu adalah pengaturan default yang berbeda, yang mungkin harus Anda timpa secara eksplisit. Sebagai contoh:
-
Visual Studio 2017 dan yang lebih baru default ke C++ 14. Gunakan opsi /std untuk menentukan standar yang berbeda.
-
GCC memiliki set default, tetapi memungkinkan Anda untuk mengubah standar yang Anda gunakan untuk kompilasi. Mengkompilasi dengan
g++ example.cpp
menggunakan standar default (standar C++98 untuk GCC sebelum versi 6 dan C++14 untuk GCC setelah versi 6). Kode Anda tampaknya gagal karena Anda menggunakan fitur C++11 tetapi kompiler Anda menggunakan standar lama secara default.
g++ -std=c++11 example.cpp
harus membuat beberapa kesalahan Anda hilang dengan secara eksplisit menentukan standar, dalam hal ini standar C++11.
Ini hanyalah trade off yang berbeda yang dipilih oleh kompiler. Memiliki hanya satu standar yang didukung mungkin membuat dukungan dan memperbaiki kesalahan lebih mudah, karena Anda tidak memiliki kompiler berbeda + kombinasi versi standar yang mungkin memiliki bug berbeda. Mampu mengubah standar yang digunakan untuk kompilasi membuatnya lebih mudah untuk menguji apakah suatu program bekerja dengan baik dengan standar baru atau perubahan apa yang harus Anda perbaiki dll...
Secara umum GCC lebih minimal dan Anda secara eksplisit menentukannya jika Anda ingin melakukan beberapa hal tambahan. Saya akan merekomendasikan menggunakan sesuatu seperti:
g++ -Wall -Wextra -pedantic -std=c++11 example.cpp
Menggunakan -Wall
dan -Wextra
berikan tingkat peringatan yang layak untuk memulai dengan -pedantic
memberi tahu Anda jika Anda mencoba menggunakan ekstensi kompiler yang berfungsi tetapi akan membuat kode Anda kurang portabel, dan yang terakhir, Anda harus selalu menentukan standar yang ingin Anda gunakan, baik itu -std=c++11
, -std=c++14
atau -std=c++98
yang lebih lama .
Anda mungkin juga ingin melihat kemungkinan pengembangan dan debugging jarak jauh menggunakan VS 2015 dan ekstensi Pengembangan Linux.Visual C++ untuk Pengembangan Linux (30 Maret 2016)