Saya terus membaca tentang C99 dan C ++ 11 dan semua hal yang sangat manis ini yang ditambahkan ke standar bahasa yang mungkin bagus untuk digunakan suatu hari nanti. Namun, saat ini kami merana di tanah penulisan C ++ di Visual Studio.
Akankah hal baru dalam standar ditambahkan ke studio visual, atau apakah Microsoft lebih tertarik untuk menambahkan varian C # baru untuk melakukan itu?
Sunting: Selain jawaban yang diterima, saya menemukan blog tim Visual C ++:
Dan secara khusus, posting ini di dalamnya:
Sangat berguna. Terima kasih!
c++
visual-studio
visual-c++
c++11
c99
Colen
sumber
sumber
Jawaban:
MS memiliki serangkaian balasan publik untuk ini, kebanyakan dari mereka menyalahkan penggunanya. Seperti yang ini:
https://devblogs.microsoft.com/cppblog/iso-c-standard-update/
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=345360
Ini adalah keadaan yang cukup menyedihkan, tetapi juga masuk akal jika Anda mencurigai MS ingin mengunci pengguna: itu membuatnya sangat sulit untuk mem-port kode berbasis gcc modern ke MSVC, yang setidaknya menurut saya sangat menyakitkan.
Ada solusi, meskipun: Perhatikan bahwa Intel jauh lebih tercerahkan dalam hal ini. kompiler Intel C dapat menangani kode C99 dan bahkan memiliki flag yang sama dengan gcc, membuatnya lebih mudah untuk mem-port kode antar platform. Juga, kompiler Intel bekerja di studio visual. Jadi dengan mengikis MS COMPILER Anda masih dapat menggunakan MS IDE yang menurut Anda memiliki nilai, dan menggunakan C99 sesuka hati Anda.
Pendekatan yang lebih masuk akal adalah dengan jujur beralih ke Intel CC atau gcc, dan menggunakan Eclipse untuk lingkungan pemrograman Anda. Portabilitas kode di Windows-Linux-Solaris-AIX-etc biasanya penting menurut pengalaman saya, dan sayangnya itu sama sekali tidak didukung oleh alat MS.
sumber
Herb Sutter adalah ketua dan anggota komite standardisasi C ++ yang sangat aktif, serta arsitek perangkat lunak di Visual Studio untuk Microsoft.
Dia adalah salah satu penulis model memori C ++ baru yang distandarisasi untuk C ++ 0x. Misalnya kertas-kertas berikut ini:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2669.htm
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007 /n2197.pdf
ada namanya di atasnya. Jadi saya kira penyertaan pada Windows C ++ 0x dijamin selama H. Sutter tetap di Microsoft.
Adapun C99 hanya sebagian dimasukkan dalam Visual Studio, saya rasa ini adalah pertanyaan prioritas.
booleandi C99 menggelikan, paling-paling ... Lihat http://david.tribble.com/ teks / cdiffs.htm untuk informasi lebih lanjut)Jadi, apakah saya akan menjadi Microsoft, mengapa saya menerapkan fitur yang hanya akan digunakan oleh sedikit orang ketika fitur yang sama sudah ditawarkan dalam lebih banyak bahasa aktif komunitas yang sudah digunakan oleh kebanyakan orang?
Kesimpulan?
C ++ 0x akan disertakan, sebagai perpanjangan dari VS 2008, atau pada Visual Studio generasi berikutnya (generasi?).
Fitur C99 yang belum diimplementasikan tidak akan diterapkan di tahun-tahun mendatang, kecuali terjadi sesuatu yang dramatis (negara yang penuh dengan pengembang C99 muncul entah dari mana?)
Sunting 2011-04-14
Rupanya, "negara yang penuh dengan pengembang C99" sudah ada: http://blogs.msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx#6415401
^ _ ^
Tetap saja, komentar terakhir di: http://blogs.msdn.com/vcblog/archive/2007/11/05/iso-c-standard-update.aspx#6828778 cukup jelas, saya rasa.
Sunting 2012-05-03
Herb Sutter menjelaskan bahwa:
Posting blog menambahkan tautan dan penjelasan lebih lanjut untuk keputusan tersebut.
Sumber: http://herbsutter.com/2012/05/03/reader-qa-what-about-vc-and-c99/
sumber
restrict
kunci. Ada banyak sekali fitur C99 hebat yang hilang dari C ++, dan itu adalah fitur yang saya gunakan setiap hari sebagai programmer C.restrict
kata kunci, Anda masih bisa menggunakan di C ++, ternyata: stackoverflow.com/questions/776283/… . . .Mulai dari VC2013 pratinjau 1 , C99, satu set C ++ 11 yang lebih beragam dan beberapa standar C ++ 14 yang baru diperkenalkan didukung. Lihat blog resmi untuk detail lebih lanjut: http://blogs.msdn.com/b/vcblog/archive/2013/06/27/what-s-new-for-visual-c-developers-in-vs2013-preview. aspx
Memperbarui:
Dari https://news.ycombinator.com/item?id=9434483 (Stephan T Lavavej alias: STL adalah pengelola tim STL @VC):
Lihat posting ini untuk detailnya: http://blogs.msdn.com/b/vcblog/archive/2015/04/29/c-11-14-17-features-in-vs-2015-rc.aspx .
sumber
Saya telah terlibat dalam pekerjaan ISO C ++ (2000-2005), dan Microsoft memberikan kontribusi signifikan pada bahasa itu. Tidak ada keraguan bahwa mereka akan bekerja pada C ++ 0x, tetapi mereka membutuhkan lebih banyak waktu daripada yang dikatakan Intel. Micosoft harus berurusan dengan basis kode yang lebih besar yang sering menggunakan ekstensi miliknya. Ini hanya membuat testfase yang lebih lama. Namun, mereka akan mendukung sebagian besar C ++ 0x pada akhirnya (ekspor masih tidak disukai, atau begitulah yang saya mengerti).
Ketika datang ke ISO C, orang yang mengerjakan standar tidak mewakili pasar Microsoft. Pelanggan Microsoft dapat menggunakan C ++ 98 jika mereka hanya mencari C yang lebih baik. Jadi mengapa Microsoft mengeluarkan uang untuk C99? Tentu, Microsoft memilih suku cadang, tapi itu bisnis yang waras. Mereka akan membutuhkannya untuk C ++ 0x, jadi mengapa menunggu?
sumber
Sayangnya dukungan MSVC untuk C sangat kurang. Ini hanya mendukung porsi C99 yang merupakan subset dari C ++ ... yang berarti, misalnya, secara fisik tidak mungkin untuk mengkompilasi ffmpeg atau pustaka libav * di MSVC, karena mereka menggunakan banyak fitur C99 seperti elemen struct bernama. Hal ini diperparah oleh fakta bahwa libavcodec juga memerlukan kompiler yang memelihara penyelarasan stack, yang tidak dimiliki MSVC.
Pekerjaan yang saya pada x264, yang tidak seperti ffmpeg tidak melakukan upaya untuk mendukung MSVC, meskipun demikian sering menjadi mimpi buruk dalam dan dari dirinya sendiri. Itu tidak mempertahankan penyelarasan tumpukan bahkan jika Anda secara eksplisit meneruskan panggilan fungsi tertinggi melalui fungsi penyelarasan tumpukan berbasis perakitan eksplisit, jadi semua fungsi yang memerlukan tumpukan selaras harus dinonaktifkan. Juga sangat menjengkelkan karena saya juga tidak bisa menggunakan vararrays; mungkin ini yang terbaik, karena tampaknya GCC sangat pesimis terhadap kinerja mereka.
sumber
Sebuah posting terbaru tentang kompatibilitas fitur C ++ 11 MSVC untuk MSVC 2010 dan 2011 sekarang online .
sumber
Microsoft tidak pernah menyatakan minat nyata untuk mengikuti kecepatan standar c99 (yang semakin tua sekarang). Sedih bagi C-programmer, tetapi saya curiga Microsoft lebih peduli pada komunitas C ++.
sumber
Visual C ++ 2008 SP1 setidaknya berisi bagian-bagian TR1, dan dari waktu ke waktu, tim Visual C ++ sedang ngeblog atau berbicara tentang C ++ 0x, jadi saya kira mereka akan mendukungnya pada suatu saat dalam fitur ini. Aku tidak membaca apapun yang resmi.
sumber
Informasi terbaru tentang ini:
Sekarang ada (10 Nov 2008) "Community Tech Preview" (CTP) dari VS2010 yang berisi pratinjau VC10 yang memiliki beberapa bagian C ++ 0x yang diimplementasikan (perhatikan bahwa VC10 tidak akan memiliki set lengkap C ++ 0x perubahan diterapkan bahkan ketika VC10 dirilis):
http://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814&displaylang=en
Beberapa detail tentang apa yang baru di VC10 CTP:
Seperti disebutkan dalam artikel di atas, "Visual C ++ compiler di Microsoft Visual Studio 2010 September Community Technology Preview (CTP) berisi dukungan untuk empat fitur bahasa C ++ 0x, yaitu:"
sumber
Herb Sutter adalah ketua badan standar ISO C ++ dan juga bekerja untuk Microsoft. Saya tidak tahu tentang standar Visual Studio C - terutama karena saya tidak pernah menggunakan C biasa - tetapi Microsoft yakin mencoba untuk mendorong standar C ++ baru ke depan. Bukti ini - seperti yang disebutkan OregonGhost - TR1 yang disertakan dalam Rilis Layanan Visual Studio terbaru.
sumber
Tim Visual C ++ mengeluarkan tabel fitur C ++ 0x yang didukung rilis 2010 di http://blogs.msdn.com/b/vcblog/archive/2010/04/06/c-0x-core-language -fitur-dalam-vc10-tabel.aspx . Karena mungkin ada jeda waktu antara spesifikasi dan implementasi, tampaknya cukup masuk akal. Wikipedia memiliki artikel bagus tentang spesifikasi tersebut. Itu belum selesai pada saat saya menulis ini.
sumber
Visual C ++ Bloq menyediakan banyak informasi tentang beberapa poin menarik terkait dukungan C ++ 11 di VC ++ 11, termasuk beberapa tabel
Visual C ++ Team Blog, C ++ 11 Fitur dalam Visual C ++ 11
sumber