|
| Spørgsmål om platform-uafhængighed og port~ Fra : Joe |
Dato : 01-06-10 22:25 |
|
Hejsa,
Jeg skal implementere en algoritme i ANSI C. Algoritmen skal
pakkes ind i et API.
Jeg bruger Bloodsheed's Dev-C++ (ver. 4.9.9.2) og har
tilføjet compiler-kommandoen -ansi i menuen "Compiler Options".
Jeg har desuden sat "Support all ANSI standard C programs" til
"Yes".
Er det nok for at sikre, at min kode overholder ANSI C standarden?
Hvis en given platform har en tilhørende C-compiler, hvordan sikrer jeg
mig så at min kode kan compiles på den platform? Er det nok at min kode
overholder/følger ANSI C standarden?
Hvordan sikrer jeg mig, at variabler som skal have en bit-bredde på
16bit, faktisk er 16bit brede uanset platform ? Findes der ikke en
header-fil med makroer som UINT16, SINT16 osv, så jeg bare
kan bruge disse typer og være sikker på at eksempelvis
UINT16 x;
altid resulterer i at x er 16 bit bred og unsigned ...uanset platform..
Tak på forhånd.
| |
Arne Vajhøj (02-06-2010)
| Kommentar Fra : Arne Vajhøj |
Dato : 02-06-10 03:12 |
|
On 01-06-2010 17:25, Joe wrote:
> Jeg skal implementere en algoritme i ANSI C. Algoritmen skal
> pakkes ind i et API.
>
> Jeg bruger Bloodsheed's Dev-C++ (ver. 4.9.9.2) og har
> tilføjet compiler-kommandoen -ansi i menuen "Compiler Options".
> Jeg har desuden sat "Support all ANSI standard C programs" til
> "Yes".
>
> Er det nok for at sikre, at min kode overholder ANSI C standarden?
>
> Hvis en given platform har en tilhørende C-compiler, hvordan sikrer jeg
> mig så at min kode kan compiles på den platform? Er det nok at min kode
> overholder/følger ANSI C standarden?
>
> Hvordan sikrer jeg mig, at variabler som skal have en bit-bredde på
> 16bit, faktisk er 16bit brede uanset platform ? Findes der ikke en
> header-fil med makroer som UINT16, SINT16 osv, så jeg bare
> kan bruge disse typer og være sikker på at eksempelvis
>
> UINT16 x;
>
> altid resulterer i at x er 16 bit bred og unsigned ...uanset platform..
-ansi -pedantic
bør sikre dig mod sprog udvidelser i forhold til ANSI/ISO.
-Wall
er nok også en god option.
Det er imidlertid ikke det samme som at et program vil opføre
sig ens på alle platforme.
Det er jeg lidt bange for kræver en sikker hånd hos ham der
benytter tastaturet mens koden skrives.
Med hensyn til data typer med specifik størrelse, så har C99
en stdint.h som definerer nogle standard størrelse - f.eks.
er din 16 bit unsigned uint16_t.
Arne
| |
|
|