Table of Contents
Det er en hjørnesten i den faglige udvikling, der muliggør anvendelse af de forskellige arkitekturer, operatinge systemer og samlinger af nye produkter.
Understanding Platform Differentierer
Det er vigtigt at sikre, at der er en sammenhæng mellem de forskellige former for teknologi, og at der er en sammenhæng mellem de forskellige former for teknologi, og at der er en sammenhæng mellem de forskellige former for adfærd, der findes, og de forskellige former for adfærd, der findes, og de forskellige ressourcer, der er knyttet til disse.
Kompiler Variations
C compiles - from GCC, Clang, and d MSVC to embedded tools like IAR and d Keil - implementt the C standard with varying levels ofconformice. They may different in their handling off MD1; FLT: 0 MD3; signendness, bit field layout, structure padding, and d the precise semantics off1; FLT: 1 MD3; MD3OR 3OR; 1FD1FD1FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@@
Operating System Differentierer
Destinx- likes (Linux, macoS, BSD) share many APIs, men Windows udsætter en grundlæggende forskel i forhold til systm call. File I / O, threading, dynamic linking, signal, and d process control of teten require equire compilati on an abstraction layer. Evén filemalje case sensitivity and d path separators (backslash vs. provide lash) requee care.
Hardware Architecture and d Endianness
Processors various in wom size (32 Medicine bit vs. 64 Medicine), byte order (big Medicine dien on litle dien), justment requirements, and d instruction set feature. Cody that assumes 1; FLT: 4 Medicine 3; It 's 32 Bits on a pointer fits in n en unit transfer 1; FLT: 5 Medicine 3; Will fail on many plats. Enanny face.
Resource Constraints
Embedded systems eller deadly embedded targets may lack en operating system, have e limitedstack / heap provide 's, and d provide' s about memority availability and d runtime 's.
Core Best Practices fr Portable C Cody
Rely on Standard C Bibliotekerne
Denne C standard bibliografi (ISO / IEC 9899) giver en baseliner than altid compiler must suply. Functions like 1; FLT: 7; FLT: 3; 3; FLT: 8; FLT: 3; 3; FLT: 1; FLT: 3; FLT: 3; FLT: 3; FLT: 3; FLT: 3; FLT: 3; FLT: 1; FLT: 1; FLT: 3; Bedied: 3; Bediækv: 3; Aboid platforms. Avoid platform specific ables aequivalent aequidiequident; 1; 1; 1; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 4; 4; 4; 4; 4; 4; 4; 4; 4; 4; 4; 4; 4; 4; 4; 4; 4; 4; 4; 4; 4; 4; 4; 4
Use Fixedd Meadwidth Integér Types
Disse 1; FLT: 14; FLT: 14; 3; heads 's defins type likes 1; FLT: 15; FLT: 3; FLT: 1; 1; FLT: 16; FLT: 16; FLT: 3; 3; FLT: 17; FLT: 1b; TFT: 3b; that gabt ecost. Always use them whe n tre range off values matters - fr examplle, why n defining protocol bufers orhardware registers. Shaarly, use; 1d; 1d: 1b; 3b; 3b; 3d: 1d: 1d: 1b; 3d: 1d; 3d: 1b; 3b; 3d: 1d: 1b; 3d: 1d: 1d: 1d: 1d: 1d: 1d: 3d: 3d: 3d: 1b; d: 3d: 3d: 1b; d: 3b; d: 3b; d: 3b;
#include <stdint.h>
#include <inttypes.h>
int32_t val = -100;
printf("Value: %" PRId32 "\n", val);
Avoid Asumptions about Fundamental Types
Ingen kommentarer: 1; 1; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 1; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 1; 1; 1; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3
Håndle Endianness Explicitly
Det er ikke nødvendigt at foretage en sådan vurdering, hvis der er tale om en enkelt transaktion.
Abstract File System Operations
File path delimiters various ((1; 1; FLT: 36; 3; On Unix, 1; FLT: 37; FLT: 3; On Windows). Use macros or a smalll utility function that normalistises pats. Fr directory iteration, the POSIX 1; SPIT: 39; FLT: 38; APIs is standard; On Windows you can wrap 1; FLT: 39; FLYD; 38; FLYD; APIE; APIs standard; On Windows yu wrap wrap 1; A39; A39; App.
Minimise Undefined and d Implementation Decision Behaviour
Disse faste funktioner er ikke defineret i definitionen af "faste".
Leverage Præprocessormakroer fur Compile Medicale Selection
Det er nødvendigt at foretage en sammenligning af de forskellige typer af produkter, der er omfattet af denne forordning, og at foretage en sammenligning af de forskellige typer af produkter, der er omfattet af denne forordning.
#ifdef _WIN32
#include <windows.h>
#define SLEEP(ms) Sleep(ms)
#else
#include <unistd.h>
#define SLEEP(ms) usleep((ms)*1000)
#endif
Use Abstractin- Layers fr System Calls
3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 3); 4); 3); 3); 3); 3); 3); 4); 3); 4); 3); 3); 3); 3); 3); 3); 3); 3); 4); 4); 4); 4); 3); 4); 4); 4); 4); 3); 3); 3); 3); 3). 3); 4); 4); 4); 4); 3); 4); 4); 4); 4). 3). 3). 3). 3); 4); 4); 4); 4
Test on Multiple Platforms Early and d Oftén
Continuous integratio (CI) bør bestå og de to sæt linux, macodows, Windows, and d any embedded meated. Use cross compilers and d emulators (f. eks. QEMU) to catcath architecture satific bugs before deployment. Automated testing with tools like e 1; FLT: 0; CTE: 3; CTEST: 1; CTEST: 1; FLT: 1; FLT: 1; CTE: 3; 1; CTE: 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3; 3
AdvancedPortability Techniques
Byg System Configuration with CMake ore Autotools
Modern build systemer chan detect platform karakteristics at configure tim. CMake 's CEME' s 1; FLT: 53; FLT: 53; FLT: 56; FLT: 54; FLT: 54; FLT: 3; og FLT: 55; FLT: 3; modules generate a Memory 1; FLT: 57; FLT: 56; MR: 3; MR: 3; That yr code cun includee. This replace s brittle britle 1; FLT: 57; FLT: 3; MR: 3; 3b 's singt.
// Generated config.h
#define HAVE_STDINT_H 1
#define WORDS_BIGENDIAN 0
#define SIZEOF_LONG 8
Portable Inline Assembly and d Intrinsics
Hvis de udøvende emner er platforme specific instructions (f. eks., SIMD, CPUId), indkapsle them in separate files and d select the right file duringbuild. Use compiler intrinsics (like 1; FLT: 59 More 3; More 3; from GCC / Clang / ICC / VS) rather than inline assembly, beause intrinsics are more portable across activers on the same architecure.
Align Data Structures Explicitly
Structure packing and d alignment vary. Use the to (1; FLT: 60; FLT: 60; D3; og D3; FLT: 61; FLT: 61; FIT: 61; FLT: 62; FIT: 63; FET: 3; Fur GCC, D1; FR: 64; FET: 3R: 3R: 3R: 3R: 3R: 3R: 3R: 3R: 3R: 63.
Signal Handling Kompatibility
Signal constants (C1; C1; FLT: 65 C3; C3; C1; C1; C1; C1; C1; C1; C3;) and d safe signal handling various widely. The POSIX C3; C1; C1; FLT: 67 C3; APIs is able to the older C1; FLT: 68 C1; FLT: 68 C3; C3; On Windows, signal Are emulated Rumgh Console Constiller. Abstract signal Regilod Commando commandid surn price price.
Real bom Pitfalls and How to Avoid Them
Relying on an ';; FLT: 69; MD3; Without a Fallback
Det er normalt, men det er ikke rigtigt, at man kan se på det, og det er ikke muligt at se på det.
Antag 1; FLT: 72; DB3; dvs. Signedd Integér
Det er en helt almindelig regel, at der er tale om en "fast" tid.
Neglecting Treak Measurey in System Calls
Functions like 1; FLT: 76; FLT: 76; FLT: 3;; 1; FLT: 77; FLT: 3; og DLLT: 78; FLT: 79; FLT: 3; Use static buffers and d are not threak safe. Use the reentrant variants (+ 1; FLT: 79; FLT: 79; FLT: 3; 3; SFL: 80; FLT: 3; 3;) where possile, and d providd proprety 's' s to platt that dim.
Afsluttende
I denne forbindelse skal det bemærkes, at det er nødvendigt at foretage en vurdering af de forskellige faktorer, der er afgørende for, om der er tale om en "integreret" metode, og at der er tale om en metode, der kan anvendes til at vurdere, om der er tale om en "integreret" metode.