แก้ไขลวดลายจุดเชื่อมต่อStencils
ฝึก อบรม ที่ ดี ที่ สุด สําหรับ การ เขียน ได้ ดี โค้ด C ข้ามแพลตฟอร์มที่แตกต่างกัน
Table of Contents
การเขียนรหัส C แบบพกพา เป็นรากฐานของวิศวกรรมซอฟต์แวร์มืออาชีพ ทําให้โปรแกรมสามารถวิ่งผ่านสถาปัตยกรรมอุปกรณ์หลากหลาย ระบบปฏิบัติการ และระบบประสานงานที่ใช้งานได้น้อยที่สุด อัตราการซ่อมแซมได้ลดค่าใช้จ่าย การบํารุงรักษาได้ขยายพื้นที่ ดูเพิ่มที่ฐานผู้ใช้ และรหัสในอนาคตที่ต่อต้านการพัฒนาระบบ บทความนี้ distrieves antits expacts antiments excults expacted profiles antiation for perfortable, position in the recential & Stander, value, languages, language of real World, languages, languages, languages, ar, languages, languages, สืบค้นเกี่ยวกับโครงการเกี่ยวกับโครงการพัฒนาการและพัฒนาระบบคอมพิวเตอร์
การ เข้าใจ ความ แตก ต่าง
ก่อน จะ นํา เทคนิค การ ย้าย ถิ่น ไป ใช้ ผู้ พัฒนา ต้อง รู้ ถึง ความ แตก ต่าง ที่ มี อยู่ ระหว่าง เวที.
กราฟกระดาษคํานวณ
Ctracters - จาก GCCC, CLang, และ MSVC เพื่อฝังเครื่องมือเช่น IAR และ KIL - ใช้มาตรฐาน C ที่มีความแตกต่างกันไป ซึ่งอาจแตกต่างกันในการจัดการ [FT: 0] การลงนาม, การวางผังแบบบิต, การตกแต่งโครงสร้าง, และการแยกประเภทอย่างแม่นยําของ [FLT: 2] หรือ[FLT: 2] ภาษา (เช่น ไมโครซอฟต์, ไมโครซอ ไมโครซอ ชัน [FTLL: 3] อาจทําให้เกิดการเชื่อมระหว่างกันได้
การ ปฏิบัติ ความ แตก ต่าง ของ ระบบ
POSIX ระบบคล้ายระบบ (linux, MacOS, BSD) ร่วมกันหลายแบบ แต่วินโดวส์จะเปิดเผยชุดของสายโทรของระบบที่แตกต่างกัน แฟ้ม I/O, เกลียว, ลิงก์, สัญญาณ, และโพรเซสมักจะต้องใช้ตัวควบคุมทั้งเงื่อนไขการประกอบ หรือชั้นนามธรรม ชื่อแฟ้มหรือเส้นทางเชื่อมต่อ (แบ็คสแล็ค vs) ต้องการการดูแล
สถาปัตยกรรม และ ความ สําเร็จ ของ เครื่อง มือ
โพรเซสต่าง ๆ ในขนาดคํา (32-43 บิต vs. 64 บิต) โดยลําดับ (Biggendian หรือ language), pril, และตั้งค่าคุณลักษณะต่าง ๆ การประมวลผลที่อนุมานว่า [FTT: 4] เป็น 32 บิต หรือตัวชี้ที่พอดีใน [FLT: 5] จะล้มเหลวในหลายแพลตฟอร์ม ตอนจบจะเป็นจุดสําคัญ เมื่ออนุกรมข้อมูลการโอนหรือจัดเก็บข้อมูล
อัตราการประมวลผลทรัพยากร
ระบบที่ฝังแนบมาด้วย หรือเป้าหมายที่ฝังแนบแน่น อาจจะขาดระบบปฏิบัติการ ขนาดของสแต็ก/เฮป และให้ [FLT: 6] ปรับใช้กับเครื่องตรวจจับรูปแบบจํากัด รหัสพอร์ตต้องหลีกเลี่ยงการตั้งสมมติฐานเกี่ยวกับหน่วยความจําและเวลารองรับ
โปรแกรม Core Best สําหรับ Code CPortable
พึ่งพามาตรฐาน Ctrlect
The C Standard Library (ISO/EC 9899) ให้ความเห็นว่าทุกๆ sections ต้องเรียงตามกัน หน้าที่ของฟังก์ชันเช่น [FLT: 7] [FLT: 8] [FLT: 9]]] และ[FLT: 9] ทําหน้าที่เหมือนในแพลตฟอร์ม Miss: 10]. MissHE paratlets example as [FLLT: 11] (PDFE) เว้นแต่จะป้องกันโดย [FLTIV] สําหรับการดําเนินการทางคณิตศาสตร์ [FLT: ⁇ [FLT: ⁇ ]. [LTLT]. สืบค้นผ่านเว็บไซต์ของเวกเตอร์เดลิโกส (F).
ใช้รูปแบบจํานวนเต็มแบบความกว้างคงที่
[FLT: 14] หัวจดหมายนิยามประเภท [FLT: 15]] ] และ[FLT: 17] ที่รับประกันขนาดที่แน่นอน ใช้เสมอเมื่อช่วงของค่าต่าง ๆ มีความสําคัญ - ตัวอย่างเช่น เมื่อกําหนดระเบียบการบัฟเฟอร์หรือเครื่องราชอิสริยาภรณ์ คล้ายกัน ใช้รูปแบบ [FLT: 18] [FLT: 19] [FT] [FT: 19] [FT: 20] พิมพ์พอร์ตแบบที่มีโอกาสพิมพ์ได้
#include <stdint.h>
#include <inttypes.h>
int32_t val = -100;
printf("Value: %" PRId32 "\n", val);
หลีก เลี่ยง การ ถูก หลอก เกี่ยว กับ ชนิด พื้น ฐาน
ห้ามสมมุติว่า [FLT: 22] เป็น 32 บิต (FLT:23) เป็น 64 บิต หรือมีลายเซ็น ใช้ และ [FTT:26] คงที่ ([FLT: 27] [FLT: 28] เพื่อหาสมบัติที่เวลารวมเข้าด้วยกัน สําหรับคําแนะนํา [FLT: 29] หรือ [FTLL: 0] (FL: 23] ] เก็บเงินเป็นจํานวนเต็ม (FT: ⁇ .
การ จัด การ เรื่อง การ ตั้ง ครรภ์
เมื่อแลกเปลี่ยนข้อมูลสองชั้นระหว่างเครื่องจักร (network, file, หรือหน่วยความจําร่วมกัน) จะแปลงเป็นลําดับ byte – เครือข่ายทั่วไปโดยลําดับ (BigSIAND) ฟังก์ชัน POSIX [FT: 31] [FTT: 33] ใช้งานอย่างกว้างขวาง; สําหรับระบบ POICIX ที่ไม่สามารถให้บริการได้เอง โดยใช้ [FTL: 35] และทํางาน
ปฏิบัติการบนระบบแฟ้ม
พาธของแฟ้มDelmiters แตกต่างกัน ( บน Unix [FLT: 37] บนวินโดวส์ ใช้ฟังก์ชันโมโคร (Magics) หรือฟังก์ชันเครื่องมือขนาดเล็กที่ปรับเส้นทางการทํางานให้ปกติ สําหรับไดเรกทอรี การทําซ้ํา POSI เป็นมาตรฐาน คุณสามารถห่อหน้าต่าง [FLT: ⁇ เบื้องหลังอินเทอร์เฟสเดียวกัน หลีกเลี่ยงการลากตัวแบบฮาร์ดโคป
ลด ความ สําคัญ ของ พฤติกรรม ที่ ไม่ ได้ กําหนด ไว้ และ ไม่ ได้ รับ ความ พอ พระทัย
C มาตรฐาน กําหนดการดําเนินการหลาย ๆ อย่างที่นิยามไม่ได้ หรือใช้อย่างไม่นิยาม ifference example. ตัวอย่างคือ จํานวนเต็มที่ถูกเซ็นเข้า, การเลื่อนตามความกว้างของชนิด, และการประเมิน [FLT: 40] ใช้ตัวแปลงแบบคงที่ เช่น [FLT: 0] Cppcccccccc (FLT: 1) หรือ[FLT: 2] CLNY [FLTHTHE [FLLTTT] เพื่อจับรูปแบบต่าง ๆ และเขียนโค้ดที่สอดคล้องกันอย่างเคร่งครัด
พรีโปรเซสเซอร์ของ Leverap สําหรับการเลือกเวลา
การประกอบเงื่อนไขจําเป็นสําหรับแพลตฟอร์ม ⁇ dictionary แต่การนําไปใช้ในทางที่ผิดสามารถสร้างความยุ่งเหยิงได้ ใช้ตัวย่อแบบดี (FT:41) [FLT: ⁇ ] และ luffer marographs เช่น [FLT: 45]. เอกสารแต่ละฉบับ และเก็บภาคย่อยย่อยย่อย: ⁇ .
#ifdef _WIN32
#include <windows.h>
#define SLEEP(ms) Sleep(ms)
#else
#include <unistd.h>
#define SLEEP(ms) usleep((ms)*1000)
#endif
ใช้เลเยอร์เพื่อเรียกระบบ
สําหรับฟังก์ชัน Firling, Project, Times, และการจัดการหน่วยความจํา แบบบาง ๆ ตัวอย่างเช่น กําหนดประเภท [FLT: 48] และ ซึ่งโยงไปยังเธรด POSIX บน Universe และ[FT: 50] วิธีเดียวกันนี้ใช้ได้กับไลบรารีแบบไดนามิค (FLT: 55) v[FT: 255]. ไลบรารีหลายแห่ง (อังกฤษ: FOLF] [FLF] [FLFLF]] [FLLLLLFLLLL]]]] จัดทําการสร้างโครงสร้างโครงสร้างโครงสร้างแบบนามธรรมขึ้นมาหลายแบบ
การ ทดสอบ ใน หลาย แพลตฟอร์ม ตั้ง แต่ ต้น และ บ่อย ครั้ง
การรวมข้อมูลเข้าแบบต่อเนื่อง (CI) ท่อน้ํา ควรทําการรวมและประมวลผลชุดทดสอบบนลินุกซ์, MacOS, Windows และเป้าหมายที่ฝังตัวอยู่ ใช้เครื่องหมาย crossipers และตัวจําลอง (เช่น QEMU) เพื่อจับข้อผิดพลาดก่อนการปรับใช้ โดยอัตโนมัติการทดสอบด้วยเครื่องมือเช่น [FLT: 0]cter [FT: 1] หรือ [FLT: 2] Project/STCE[FEST[FLLLLT] ใช้บังคับ
อุปกรณ์การวางตําแหน่งขั้นสูง
สร้างการปรับแต่งระบบด้วย Cdoor Tools
ระบบการสร้างสมัยใหม่สามารถตรวจจับลักษณะแพลตฟอร์มที่เวลาปรับแต่ง Cgg's [FT:53]] (FLT:54]] และ (FLT:55) ยานย่อยสร้าง ให้มี ที่รหัสของคุณรวมอยู่ด้วย รหัสนี้แทนที่ความเหลื่อมล้ํา [FTL:57] ด้วยจุดเดียวของความจริง
// Generated config.h
#define HAVE_STDINT_H 1
#define WORDS_BIGENDIAN 0
#define SIZEOF_LONG 8
การ ประชุม ใหญ่ ใน อิน ไลน์ และ การ ประชุม ภาค ใน อิน ทรี ติก
เมื่อมีการทํางานที่ต้องการคําแนะนําแบบแพลตฟอร์ม (เช่น SCD, CPUID) จัดให้เรียงแฟ้มแต่ละตัว และเลือกแฟ้มที่ถูกต้องระหว่างการสร้าง ใช้ Intriversity intrispricsics (เช่น จาก GCC/CLC/ICVS) แทนการรวมเข้ากับแฟ้มอื่น ๆ เนื่องจากอินทรินติกจะสลับที่ของสถาปัตยกรรมเดียวกันได้มากกว่า
การจัดวางโครงสร้างข้อมูล
การจัดส่วนโครงสร้างมีความหลากหลาย ใช้ peritions from C11 (FLT:62) เพื่อบังคับการจัดตําแหน่ง สําหรับผู้สูงอายุ ใช้ส่วนตัดต่อ ( สําหรับ GCC, สําหรับ MSVC).
การใช้สัญญาณการเข้ากันได้กับการจัดการ
ค่าคงที่สัญญาณ (] ] และจัดการสัญญาณปลอดภัยที่หลากหลาย POSIX API ชื่นชอบการเพิ่มข้อมูลที่เก่ากว่า (FLT:68). บนวินโดวส์ สัญญาณถูกจําแนกผ่านทางเครื่องมือควบคุม alft Carders. Abspact tigent a tagent enter. appraction. anguage. สืบค้นเมื่อ ค.ศ.
▪ โลก ตก ต่ํา และ หลีก เลี่ยง การ ตก อยู่ ใน อันตราย
พึ่งพา [FLT: 69] โดยไม่มีการถอยหลัง
เป็นมาตรฐานบน POSIX แต่หายไปจากแพลตฟอร์มหลายแบบและสภาพแวดล้อมของวินโดวส์ที่เก่ากว่า ใช้เครื่องมือพกพาแบบ [FLT: 0] pplibc หรือพับเล็ก (FLT:71) ภายใต้ระบบควบคุม
สมมติ เป็นสัญลักษณ์ขององค์กร
C Standard เท่านั้นที่บอกว่า เป็นชนิดจริงที่สามารถแทนเวลาได้ บนระบบบางระบบฝังตัวแล้วเป็นค่าบวก 32(32) บิต ส่วนอื่น ๆ คือ 64xbit ที่ลงนามในจํานวนเต็ม อย่าคํานวณ โดยไม่ตรวจสอบคุณสมบัติหรือใช้ (FT:75) สําหรับความแตกต่าง
การ ตัด ไม้ ฝรั่ง ออก
การดําเนินงานเช่น และ ใช้บัฟเฟอร์แบบคงที่ และไม่เป็นแบบเส้นเชือก ป้องกันตัว ( โดยให้ [FT: 80] และจัดระบบการวางแผงแบบเสียรูป แบบสํารองบนแผ่นไม้ที่ขาดไป
รูปแบบการวน
การ เขียน รหัส C แบบ พก พา เป็น ทั้ง การ ตี สอน และ การ ลง ทุน โดย การ ยึด ติด กับ มาตรฐาน C, การ เลือก ชนิด ที่ คงทน, การ ใช้ ส่วน ต่อ ระบบ นามธรรม, และ การ ทดสอบ ตลอด หลาย เวที ผู้ พัฒนา สามารถ ผลิต ซอฟต์แวร์ ที่ ใช้ ใน การ จัด การ กับ สภาพ แวด ล้อม ได้ ดี ตั้ง แต่ ระบบ คอมพิวเตอร์ ไป จน ถึง ระบบ ควบคุม ไมโคร ไมโคร คอล คอล เลอร์.