Mengenai c

Mengenai c

Pengenalan

Apa yang anda baca adalah permulaan siri artikel yang didedikasikan untuk pembangunan di Linux Systems. Walau bagaimanapun, dengan pengubahsuaian kecil (jika ada), anda akan dapat menggunakan pengetahuan ini yang akan anda dapatkan dengan membaca siri kami di mana -mana sistem lain yang menggunakan alat yang sama (Openindiana, BSD ...). Artikel pertama ini akan berurusan secara beransur -ansur dengan selok -belok penulisan kod c di linux. Anda dijangka mempunyai pengetahuan pengaturcaraan asas, sama ada pada sistem linux/unix atau pada platform lain. Ideanya ialah anda harus mengetahui asas -asas pengaturcaraan, seperti pembolehubah atau cara menentukan struktur. Walaupun, anda akan mendapat maklumat ini dari artikel ini, kami tidak akan mendesak konsep peringkat pemula. Perkataan amaran: Kami tidak akan memasukkan segala -galanya yang ada untuk memberitahu tentang C, kerana itu akan mengambil banyak ruang dan tentu saja, kami sebenarnya tidak tahu segala -galanya mengenai C.

Mengapa c?

Sebilangan daripada anda mungkin berpendapat bahawa C bukan bahasa peringkat pemula yang terbaik. Bersetuju, tetapi sekali lagi, anda dijangka mempunyai pengetahuan pengaturcaraan asas, untuk satu. Kedua, C dan Unix, dan Linux selepas itu, terikat bersama -sama bahawa ia hanya kelihatan semulajadi untuk memulakan siri pembangunan kami dengan C. Dari kernel, yang mana sebahagian besarnya ditulis dalam C, kepada banyak aplikasi pengguna sehari-hari, C digunakan secara besar-besaran pada sistem Linux anda. Sebagai contoh, GTK didasarkan pada C, jadi jika anda menggunakan aplikasi GNOME atau XFCE, anda menggunakan aplikasi berasaskan C. C adalah bahasa pengaturcaraan yang lama dan mantap, alat penting di banyak bahagian di dunia IT, dari sistem tertanam ke kerangka utama. Oleh itu, hanya adil untuk mengandaikan bahawa kemahiran C bukan sahaja memperkaya CV anda, tetapi mereka juga akan membantu anda menyelesaikan banyak isu pada sistem Linux anda, hanya jika anda mengambilnya dengan serius dan berlatih banyak dengan membaca dan menulis C kod.

Mengenai c

Sejarah

C lebih dari 40 tahun, dengan permulaan di Labs Bell dengan Brian Kernighan, Dennis Ritchie dan Ken Thompson sebagai "Suspek Biasa."Pembangunan Unix dan evolusi C dikaitkan dengan rapat, seperti yang kita katakan, kerana Unix pada mulanya ditulis dalam perhimpunan, tetapi itu mempunyai banyak kelemahan. Oleh itu, apabila berpindah ke PDP-11 sebagai platform perkakasan utama, pemaju bermula sebagai bahasa teras untuk Unix. Pada tahun 1978, Kernighan dan Ritchie menulis, "Bahasa pengaturcaraan C," sebuah buku yang hari ini seperti 20 tahun yang lalu: buku mengenai pengaturcaraan C. Kami dengan sungguh -sungguh mengesyorkan anda mendapatkannya.



Klasifikasi

Selalu ada orang yang berminat dengan klasifikasi perkara dan tentu saja, pengaturcaraan tidak berbeza. Bergurau, kerana kami pada mulanya, kami fikir anda harus tahu bahawa c adalah bahasa pengaturcaraan berstruktur prosedur, dengan menaip lemah. Apa yang baru kita katakan, dalam bahasa Inggeris, adalah bahawa C menggunakan prosedur (nama biasa yang digunakan oleh pengaturcara C, dan yang akan kita gunakan juga, adalah fungsi bagaimanapun), bahawa ia menggunakan pendekatan berstruktur (berfikir blok kod) dan Akhirnya, ia menyokong penukaran jenis tersirat. Sekiranya anda tidak tahu apa maksudnya di atas, jangan takut, anda akan mengetahui!

Pendekatan kami

Artikel ini hanya bahagian pengantar dan kami akan kerap menerbitkan bahagian seterusnya di mana setiap bab akan berurusan dengan bahagian penting bahasa: pembolehubah, petunjuk, struktur, dll. (melanggan suapan RSS jika anda belum melakukannya) Pada akhir bahagian teoritis, kami akan menunjukkan kepada anda contoh praktikal, yang kami pilih YEST, sekeping perisian kecil yang ditulis oleh Kimball Hawkins (terima kasih, Kimball). Kami akan menyusunnya, kemudian membungkusnya untuk sistem Debian dan Fedora. Pemaju Debian Andree Leidenfrost kemudian akan menunjukkan kepada anda bagaimana untuk menyerahkan pakej baru kami ke repositori Debian, memastikan kami menghormati semua keperluan pakej untuk dimasukkan ke dalam pengedaran Debian (terima kasih, Andree). Kami mengesyorkan anda untuk mencuba contoh kami di sistem anda, luangkan masa untuk memeriksa kod dan cuba membuat pengubahsuaian anda sendiri.

Alat yang diperlukan

Sebelum kita mula, marilah kita pastikan kita mempunyai semua alat penting yang dipasang pada sistem linux anda. Anda memerlukan pengkompil, iaitu GCC, pakej binutil dan editor teks atau IDE. Sama ada anda memilih editor teks atau semacam IDE bergantung pada pilihan anda, tetapi lebih banyak lagi pada masa itu. Bergantung pada pilihan pengedaran dan pemasangan Linux anda yang telah anda gunakan, anda mungkin sudah mempunyai alat yang diperlukan. Kami menyusun skrip kecil untuk membantu anda melihat sama ada anda mempunyai semua alat pembangunan mandatori yang dipasang:

#!/bin/sh gcc -v jika [$? != 0]; Kemudian echo "GCC tidak dipasang!"fi ld -v jika [$? != 0]; kemudian echo "sila pasang binutils!"Fi 


Simpan skrip ini sebagai devtoolscheck.sh, jalankan:

 $ sh devtoolscheck.sh 

Di mesin saya, saya dapat mengikuti output:

$ sh devtools.SH menggunakan spesifikasi terbina dalam. Collect_gcc = gcc collect_lto_wrapper =/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.6.Sasaran 1/LTO-WRAPPER: x86_64-linux-gnu dikonfigurasi dengan: .../src/configure -v --with-pkgversion = 'Debian 4.6.1-4 '-with-bugurl = file: /// usr/share/doc/gcc-4.6/Readme.Bugs-bahasa yang boleh dipertanggungjawabkan = C, C ++, FORTRAN, OBJC, OBJ-C ++, GO --Prefix =/usr-Program-Suffix = -4.6-Model thread yang boleh diperkenalkan-yang boleh dipertanggungjawabkan-Model thread: POSIX GCC Versi 4.6.1 (Debian 4.6.1-4) GNU LD (GNU Binutils untuk Debian) 2.21.52.20110606 

Mengapa anda memerlukan binari binutil dan GCC, anda akan melihat tidak lama lagi. Sekarang mari kita fokus sedikit pada soalan "Editor vs IDE".

Satu -satunya perkara yang kami akan menasihati anda dalam hal ini adalah "Gunakan apa yang anda rasa selesa dan mengabaikan apa yang orang lain memberitahu anda". Perkara ini sangat subjektif dan bergantung pada banyak pembolehubah. Sebagai contoh, jika anda membangun (atau digunakan untuk membangunkan) pada sistem pengendalian lain, anda mungkin digunakan untuk IDE. Anda akan mendapat banyak ides yang baik di Linux, termasuk Eclipse, Geany, Kdevelop atau Anjuta. Cuba pasangkannya untuk melihat apa yang anda dapati lebih sesuai. Sebaliknya, jika anda ingin pergi ke editor mudah, terdapat banyak pilihan di sini juga: VI (M), Emacs, Kate, Nano, Jed dan sebagainya. Dengan mencari internet, anda akan mendapat banyak perbincangan mengenai editor terbaik. Kami katakan memasang beberapa daripada mereka dan mengetahui yang paling sesuai dengan anda. Anda adalah satu -satunya hakim ini, dan ia akan menjadi alat yang akan anda gunakan dengan kerap, jadi luangkan masa anda, gunakannya, baca mengenainya dan kenali dengannya. Tidak kira pilihan anda, kami akan mengandaikan bahawa anda telah membuat pilihan anda berkaitan dengan alat penyuntingan dan anda sudah biasa dengan penggunaannya.

Proses penyusunan

Dengan kata -kata mudah, proses ini adalah apa yang bermula dari kod sumber yang anda tulis dan jika semuanya berjalan lancar adalah binari yang boleh dilaksanakan atau perpustakaan. Tidak perlu dikatakan, ada lebih banyak lagi tetapi penting bagi anda untuk memahami ayat di atas sebelum anda meneruskan. Anda tidak perlu menghafal semua konsep sekarang kerana mereka akan menjadi lebih jelas kemudian. Pada peringkat ini, hanya penting untuk mendapatkan idea umum.

Katakan kita mempunyai kod sumber yang ditulis dan sekarang kita mahu pengkompil memprosesnya dan memberi kita binari yang boleh dilaksanakan. Aliran kerja proses ini digambarkan di sebelah kanan anda.

Sila ambil perhatian bahawa ini hanya terpakai kepada C, yang merupakan bahasa yang disusun, berbanding dengan bahasa yang ditafsirkan (perl, python, shell), dan kami akan merujuk dengan ketat kepada GCC dan rakan -rakan untuk seluruh panduan kami. Seperti angka di sebelah kanan anda menggambarkan preprocessor (CPP) mengambil kod sumber anda, cari Arahan Preprocessor (Di C, mereka bermula dengan hash) dan jika semuanya kelihatan betul, hasilnya adalah output yang dapat difahami oleh pengkompil. Penyusun (GCC) melakukan semua kerja keras, termasuk pengoptimuman kod untuk perkakasan yang mendasari (jika anda berminat dengan teori pengkompil atau kompilasi silang, terdapat banyak buku yang baik mengenai subjek, tetapi kami menganggap lebih banyak tahap pemula di sini). Hasilnya adalah kod pemasangan, dekat dengan mesin, dari mana binari akan dihasilkan (seperti alat). Akhirnya, bergantung kepada pilihan dan kod, "ld" akan menghubungkan yang boleh dilaksanakan ke semua perpustakaan dan voila yang diperlukan! Hasil Akhir: Program anda. Sekiranya anda ingin melihat semua fail pertengahan yang dihasilkan, bendera GCC -save -temps seperti yang akan membantu anda melakukannya. Kami mengesyorkan anda membaca halaman manual GCC, sekurang -kurangnya secara berjimat, dan pastikan pengkompil anda kami terkini. Anda akan terbiasa dengan bendera GCC biasa dengan membaca contoh kami, tetapi anda dijangka tahu apa yang mereka lakukan, bukan hanya salinan dan tampal arahan yang anda lihat di skrin.



Contoh Program C

Setiap tutorial pengaturcaraan yang menghormati diri bermula dengan program "Hello, World". Program ini tidak melakukan apa -apa selain mencetak "Hello, World!"Di skrin, kemudian keluar. Ia digunakan untuk menggambarkan struktur program yang sangat asas dan beberapa konsep penting. Oleh itu, tanpa berlengah lagi, di sini.

#include  / * Ini adalah komen */ int main () printf ("hello, dunia!\ n "); kembali 0; 

Sekarang, marilah kita membedah garis program mengikut baris dan lihat apa yang setiap baris mewakili. Yang pertama adalah arahan preprocessor (lihat di atas) yang meminta stdio.h fail, yang memberikan definisi untuk printf fungsi. Fail header adalah fail yang biasanya mengandungi pelbagai definisi (fungsi, pembolehubah ...) dan buat .C fail kurang berantakan. Semua fail sumber apa (.c) akan memerlukan adalah #include pernyataan dan mungkin hujah kepada penimbang. Semua yang ditakrifkan dalam fail header yang disertakan akan tersedia dalam kod sumber anda.

utama () adalah fungsi wajib dalam setiap program C. Seperti yang dinyatakan oleh nama, utama aktiviti akan berlaku di sini, tanpa mengira berapa banyak fungsi yang telah anda tentukan. int utama () bermaksud bahawa fungsi ini tidak mempunyai sebarang argumen (tanda kurung kosong) dan ia mengembalikan integer (awal int). Semua ini akan dibincangkan kemudian. Perkara yang paling penting di sini ialah printf fungsi, yang mengambil teks kami sebagai argumen dan memaparkannya. "\ n"Bermaksud" Newline "dan ia bersamaan dengan menggunakan kunci Enter (atau ^m). Ia dipanggil urutan melarikan diri dan semua urutan melarikan diri dalam C bermula dengan "\". Sebagai contoh, untuk lebih memahami apa urutan melarikan diri, bayangkan anda menulis kod HTML dan anda perlu mencetak ""<” character. HTML's syntax uses angle brackets to define HTML tags, so chances are your bracket will be interpreted as HTML code instead of being displayed. So, what to do? We escape it with “<” and it will appear properly. Just the same, if you want to insert a newline character, you can't type it directly, as the compiler could care less if you write your program on a single line or not and therefore you you need to escape your new line character with “\ n"".

kembali 0 memberitahu pengkompil bahawa semuanya baik -baik saja dan pelaksanaannya utama () fungsi berakhir di sana. Itu kerana 0 adalah kod untuk pelaksanaan yang berjaya, sementara nilai lebih besar daripada 0 (integer) adalah petunjuk bahawa ada yang salah. Pendakap keriting yang memulakan dan mengakhiri fungsi utama membatalkan 'blok pelaksanaannya, iaitu, apa yang berlaku dalam utama (), tinggal di utama (). Anda mungkin melihat titik -titik besar pada akhir pernyataan: mereka adalah wajib sebagai tanda bahawa pernyataan semasa berakhir di sana, tetapi mereka tidak akan digunakan dalam arahan preprocessor sebagai #include.



Penyusunan

Penyusunan akan dibincangkan dengan lebih terperinci di bahagian yang akan datang dari panduan ini. Tetapi untuk kesempurnaan di sini adalah contoh baris arahan yang mudah mengenai cara menyusun dan melaksanakan program ""Hello World"" pertama kami:

$ gcc -o hello hello.c $ ./hello hello, dunia!

Kesimpulan

Kami harap kami tidak terlalu banyak maklumat di otak anda dan anda akan menikmati tinggal bersama kami dalam tutorial pengaturcaraan ini. Bahagian 2 akan berurusan dengan perbandingan antara C dan bahasa pengaturcaraan lain untuk membantu mereka yang sudah mempunyai pengalaman dalam pembangunan.

Inilah yang boleh anda harapkan seterusnya:

  • I. C Pembangunan di Linux - Pengenalan
  • Ii. Perbandingan antara c dan bahasa pengaturcaraan lain
  • Iii. Jenis, pengendali, pembolehubah
  • Iv. Kawalan aliran
  • V. Fungsi
  • Vi. Petunjuk dan tatasusunan
  • VII. Struktur
  • Viii. Asas I/O
  • Ix. Gaya dan cadangan pengekodan
  • X. Membina program
  • Xi. Pembungkusan untuk Debian dan Fedora
  • Xii. Mendapatkan pakej di repositori debian rasmi

Tutorial Linux Berkaitan:

  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Perkara yang perlu dilakukan setelah memasang Ubuntu 22.04 Jur -ubur Jammy ..
  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Pasang Arch Linux di Workstation VMware
  • Perkara yang perlu dipasang di Ubuntu 22.04
  • Muat turun linux
  • Perintah Linux Asas
  • Perintah Linux: Top 20 Perintah Paling Penting yang Anda Perlu ..
  • Ubuntu 20.04 Panduan
"