EnglezăFrancezăSpaniolă

Ad


Favicon OnWorks

c99posix - Online în cloud

Rulați c99posix în furnizorul de găzduire gratuit OnWorks prin Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

Aceasta este comanda c99posix care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS

PROGRAM:

NUME


c99 — compilați programe standard C

REZUMAT


c99 [Opțiuni...] caii de acces [[caii de acces] [−Eu director]
[−L director] [−l bibliotecă]]...

DESCRIERE


c99 utilitarul este o interfață cu sistemul standard de compilare C; va accepta
cod sursă conform standardului ISO C. Sistemul constă conceptual din a
compilator și editor de linkuri. Fișierele de intrare la care face referire caii de acces operanzi și −l opțiune-
argumentele vor fi compilate și legate pentru a produce un fișier executabil. (Nu este specificat
dacă legătura are loc în întregime în cadrul operațiunii de c99; unele implementări pot
produce obiecte care nu sunt rezolvate complet până când fișierul este executat.)

În cazul în care −c este specificată opțiunea, pentru toți operanzii de cale a formularului fişier.c, fișierele:

$(nume de bază caii de acces .c).o

va fi creat ca rezultat al compilării cu succes. Dacă −c opțiunea nu este
specificat, nu este precizat dacă astfel .o fișierele sunt create sau șterse pentru fişier.c
operanzi.

Dacă nu există opțiuni care împiedică editarea linkurilor (cum ar fi −c or −E), și toate fișierele de intrare
compilați și legați fără eroare, fișierul executabil rezultat va fi scris conform
la −o outfile opțiunea (dacă este prezentă) sau la fișier a.out.

Fișierul executabil va fi creat așa cum este specificat în Secțiune 1.1.1.4, Fișier Citeste, Scrie,
și , cu excepția faptului că biții de permisiuni pentru fișiere vor fi setați la: S_IRWXO | S_IRWXG |
S_IRWXU

și biții specificați de masca procesului va fi șters.

OPŢIUNI


c99 utilitatea trebuie să se conformeze volumului Definiții de bază din POSIX.1-2008, Secțiune
12.2, Utilitate Sintaxă Instrucțiuni, cu excepția faptului că:

* Opțiunile pot fi intercalate cu operanzi.

* Ordinea de precizare a −L și −l opțiuni și ordinea de specificare −l Opțiuni
cu privire la caii de acces operanzii este semnificativ.

* Aplicațiile conforme vor specifica fiecare opțiune separat; adică opțiunea de grupare
litere (de exemplu, −cO) nu trebuie să fie recunoscut de toate implementările.

Următoarele opțiuni vor fi acceptate:

−c Suprimați faza de editare a link-ului a compilației și nu eliminați niciun obiect
fișierele care sunt produse.

−D nume[=valoare]
Defini nume parcă printr-un limbaj C #defini directivă. Daca nu =valoare este dat, a
se va folosi valoarea 1. The −D opțiunea are o prioritate mai mică decât −U opțiune.
Adică dacă nume este folosit atât în ​​a −U și −D opțiune, nume va fi nedefinit
indiferent de ordinea opțiunilor. Implementare suplimentară definită numes
poate fi furnizat de compilator. Implementările vor sprijini cel puțin 2048
octeți de −D definiții și 256 nume.

−E Copiați fișierele sursă în limbaj C la ieșirea standard, extinzând toate preprocesoarele
directive; nu se va efectua nicio compilare. Dacă orice operand nu este un text
fișier, efectele sunt nespecificate.

−g Produceți informații simbolice în obiectul sau fișierele executabile; natura
aceste informații sunt nespecificate și pot fi modificate prin implementare definită
interacțiuni cu alte opțiuni.

−Eu director
Schimbați algoritmul de căutare a antetelor ale căror nume nu sunt absolute
căi de căutat în directorul numit de director calea înainte
cautand in locurile obisnuite. Astfel, anteturile ale căror nume sunt incluse în
citate ("") se caută mai întâi în directorul dosarului cu
#include linie, apoi în directoarele numite în −Eu opțiuni și ultimele în mod obișnuit
locuri. Pentru anteturile ale căror nume sunt incluse între paranteze unghiulare („<>”),
antetul va fi căutat numai în directoarele numite în −Eu opțiuni și apoi în
locurile obisnuite. Directoare numite în −Eu opțiunile vor fi căutate în ordine
specificat. Dacă −Eu opțiunea este utilizată pentru a specifica un director care este unul dintre
locuri obișnuite căutate în mod implicit, rezultatele sunt nespecificate. Implementări
va sprijini cel puțin zece instanțe ale acestei opțiuni într-o singură c99 comandă
invocare.

−L director
Schimbați algoritmul de căutare a bibliotecilor numite în −l obiecte la
caută în directorul numit de director cale înainte de a căuta în
locuri obisnuite. Directoare numite în −L opțiunile vor fi căutate în ordine
specificat. Dacă −L opțiunea este utilizată pentru a specifica un director care este unul dintre
locuri obișnuite căutate în mod implicit, rezultatele sunt nespecificate. Implementări
va sprijini cel puțin zece instanțe ale acestei opțiuni într-o singură c99 comandă
invocare. Dacă un director specificat de a −L opțiunea conține fișiere cu nume
începând cu oricare dintre șiruri „libc”., „libl”., „libpthread”., „libm”.,
„librt”., „libtrace”., „libxnet”., Sau „liby”., rezultatele sunt nespecificate.

−l bibliotecă
Căutați în biblioteca numită bibliotecă.a. O bibliotecă trebuie căutată atunci când este
numele este întâlnit, deci plasarea unui −l opțiunea este semnificativă. Mai multe
bibliotecile standard pot fi specificate în acest mod, așa cum este descris în EXTENS
sectiunea DESCRIERE. Implementările pot recunoaște implementarea definită
sufixe altele decât .a ca desemnând biblioteci.

−O optlevel
Specificați nivelul de optimizare a codului. Dacă optlevel argument-opțiune este
cifră "0", toate optimizările speciale ale codului vor fi dezactivate. Dacă este cifra
"1", natura optimizării este nespecificată. Dacă −O opțiunea este omisă,
natura optimizării implicite a sistemului este nespecificată. Este
nespecificat dacă codul a fost generat în prezența −O Opțiunea 0 este
la fel ca cea generată când −O este omis. Alte optlevel valorile pot fi
sprijinit.

−o outfile
Utilizați calea outfile, în loc de cea implicită a.out, pentru fișierul executabil
produs. Dacă −o opțiunea este prezentă cu −c or −E, rezultatul este nespecificat.

−s Produceți fișiere obiect sau executabile, sau ambele, din care simbolice și altele
informații care nu sunt necesare pentru o execuție corectă folosind Exec familie definită în
volumul System Interfaces din POSIX.1‐2008 a fost eliminat (demontat). Dacă
atât −g și −s opțiunile sunt prezente, acțiunea întreprinsă este nespecificată.

−U nume Eliminați orice definiție inițială a nume.

Instanțe multiple ale −D, −Eu, −L, −l, și −U opțiunile pot fi specificate.

OPERANDE


Cererea trebuie să asigure că cel puțin unul caii de acces este specificat operandul. The
următoarele forme pentru caii de acces operanzii vor fi suportați:

fișier.c Un fișier sursă în limbaj C care urmează să fie compilat și opțional legat. Aplicația
se asigură că operandul are această formă dacă −c este folosită opțiunea.

fișier.a O bibliotecă de fișiere obiect produse de obicei de ar utilitate, și a trecut
direct la editorul de linkuri. Implementările pot recunoaște implementarea-
sufixe definite altele decât .a ca desemnând biblioteci de fișiere obiect.

fișier.o Un fișier obiect produs de c99 −c și transmis direct la editorul de linkuri.
Implementările pot recunoaște sufixe definite de implementare, altele decât .o as
care denotă fișierele obiect.

Procesarea altor fișiere este definită de implementare.

Stdin


Nefolosit.

INTRARE DOSARE


Fiecare fișier de intrare trebuie să fie unul dintre următoarele: un fișier text care conține o sursă în limbaj C
program, un fișier obiect în formatul produs de c99 −c, sau o bibliotecă de fișiere obiect, în
formatul produs prin arhivarea zero sau mai multe fișiere obiect, folosind ar. Implementările pot
furnizați utilități suplimentare care produc fișiere în aceste formate. Fișier de intrare suplimentar
formatele sunt definite de implementare.

MEDIUL VARIABILE


Următoarele variabile de mediu vor afecta execuția c99:

LIMBA Furnizați o valoare implicită pentru variabilele de internaționalizare care sunt nesetate sau
nul. (A se vedea volumul Definiții de bază din POSIX.1‐2008, Secțiune 8.2,
Internaționalizare Variabile pentru prioritatea internaţionalizării
variabile utilizate pentru a determina valorile categoriilor locale.)

LC_ALL Dacă este setată la o valoare șir nevid, suprascrieți valorile tuturor celorlalte
variabile de internaţionalizare.

LC_CTYPE Determinați locația pentru interpretarea secvențelor de octeți de date text
ca caractere (de exemplu, caractere pe un singur octet, spre deosebire de caractere pe mai mulți octeți în
argumente și fișiere de intrare).

LC_MESSAGES
Determinați locația care ar trebui utilizată pentru a afecta formatul și conținutul
mesaje de diagnostic scrise la eroare standard.

NLSPATH Determinați locația cataloagelor de mesaje pentru procesarea LC_MESSAGES.

TMPDIR Furnizați o cale care ar trebui să înlocuiască directorul implicit pentru temporar
fișiere, dacă există. Pe sistemele compatibile cu XSI, furnizați un nume de cale care trebuie
înlocuiți directorul implicit pentru fișierele temporare, dacă există.

ASINCRON EVENIMENTE


Implicit.

Stdout


Dacă mai mult de unul caii de acces operand care se termină în .c (sau eventual alte sufixe nespecificate) este
dat, pentru fiecare astfel de fișier:

„%s:\n”, <caii de acces>

poate fi scris. Aceste mesaje, dacă sunt scrise, vor precede procesarea fiecărei intrări
fişier; nu vor fi scrise la ieșirea standard dacă sunt scrise la standard
eroare, așa cum este descris în secțiunea STDERR.

În cazul în care −E este specificată opțiunea, rezultatul standard va fi un fișier text care reprezintă
rezultatele etapei de preprocesare a limbii; poate conține informații suplimentare
adecvate pentru trecerile de compilare ulterioare.

Stderr


Eroarea standard va fi utilizată numai pentru mesajele de diagnosticare. Dacă mai mult de unul caii de acces
operand care se termină în .c (sau eventual alte sufixe nespecificate), pentru fiecare dintre ele
fișier:

„%s:\n”, <caii de acces>

pot fi scrise pentru a permite identificarea mesajelor de diagnosticare și avertizare cu
fișierul de intrare corespunzător. Aceste mesaje, dacă sunt scrise, vor precede procesarea fiecăruia
fișier de intrare; ele nu vor fi scrise la eroarea standard dacă sunt scrise la
ieșire standard, așa cum este descris în secțiunea STDOUT.

Acest utilitar poate produce mesaje de avertizare cu privire la anumite condiții care nu garantează
returnând o valoare de ieșire de eroare (diferită de zero).

REZULTATE DOSARE


Fișierele obiect sau fișierele executabile sau ambele sunt produse în formate nespecificate. Dacă
calea unui fișier obiect sau fișier executabil care urmează să fie creat de c99 se rezolvă la un existent
intrare de director pentru un fișier care nu este un fișier obișnuit, nu este specificat dacă c99 trebuie
încercați să creați fișierul sau va emite un diagnostic și va ieși cu o ieșire diferită de zero
stare.

EXTENDED DESCRIERE


Standard Biblioteci
c99 utilitatea trebuie să recunoască următoarele −l opțiuni pentru biblioteci standard:

−l c Această opțiune va pune la dispoziție toate interfețele la care se face referire în sistem
Volumul interfețelor POSIX.1‐2008, cu posibila excepție a celor
interfețe listate ca rezidenți în , , , ,
, , , , , ,
, , , , pthread_kill(), și
pthread_sigmask() în , , interfețe marcate ca opționale în
, interfețe marcate ca ADV (Advisory Information) în , și
interfețe care încep cu prefixul clock_ sau time_ in . Această opțiune
nu trebuie să fie prezent pentru a provoca o percheziție în această bibliotecă.

−l l Această opțiune va pune la dispoziție toate interfețele cerute de limbajul C
ieșire din Lex care nu sunt puse la dispoziție prin intermediul −l c opțiune.

−l pthread
Această opțiune va pune la dispoziție toate interfețele la care se face referire în și
pthread_kill() și pthread_sigmask() la care se face referire în . O
implementarea poate căuta în această bibliotecă în absența acestei opțiuni.

−l m Această opțiune va pune la dispoziție toate interfețele la care se face referire în ,
, și . O implementare poate căuta în această bibliotecă în
absența acestei opțiuni.

−l rt Această opțiune va pune la dispoziție toate interfețele la care se face referire în ,
, , , și , interfețe marcate ca
opțional în , interfețe marcate ca ADV (Advisory Information) în
, și interfețe care încep cu prefixul clock_ și time_ in
. O implementare poate căuta în această bibliotecă în absența acesteia
opțiune.

−l urmări Această opțiune va pune la dispoziție toate interfețele la care se face referire în . O
implementarea poate căuta în această bibliotecă în absența acestei opțiuni.

−l xnet Această opțiune va pune la dispoziție toate interfețele la care se face referire în ,
, , , și . O implementare
poate căuta în această bibliotecă în absența acestei opțiuni.

−l y Această opțiune va pune la dispoziție toate interfețele cerute de limbajul C
ieșire din yacc care nu sunt puse la dispoziție prin intermediul −l c opțiune.

În absența opțiunilor care inhibă invocarea editorului de linkuri, cum ar fi −c or −E,
il c99 utilitatea va cauza echivalentul a −l c opțiunea care urmează să fie transmisă la link
redactor după ultimul caii de acces operand sau −l opțiunea, făcându-l să fie căutat până la urmă
alte fișiere obiect și biblioteci sunt încărcate.

Nu se specifică dacă bibliotecile libc.a, libl.a, libm.a, libpthread.a, librt.a,
libtrace.a, libxnet.a, Sau Libia există ca fișiere obișnuite. Implementarea poate accepta ca
−l opțiune-argumente nume de obiecte care nu există ca fișiere obișnuite.

Extern Simboluri
Compilatorul C și editorul de linkuri trebuie să suporte semnificația simbolurilor externe până la a
lungime de cel puțin 31 de octeți; acțiunea întreprinsă la întâlnirea simbolurilor care depășesc
Lungimea maximă a simbolului definită de implementare este nespecificată.

Compilatorul și editorul de linkuri trebuie să accepte cel puțin 511 simboluri externe per sursă sau
fișier obiect și un minim de 4095 de simboluri externe în total. Un mesaj de diagnosticare trebuie
să fie scris în ieșirea standard dacă limita definită de implementare este depășită; alte
acțiunile sunt nespecificate.

Antet Caută
Dacă un fișier cu același nume ca unul dintre anteturile standard definite în baza
Volumul definițiilor POSIX.1‐2008, Capitol 13, Anteturi, neprevăzut ca parte a
implementare, este plasat în oricare dintre locurile obișnuite care sunt căutate în mod implicit
antete, rezultatele sunt nespecificate.

Programare medii
Toate implementările vor suporta unul dintre următoarele medii de programare ca: a
Mod implicit. Implementările pot suporta mai mult de una dintre următoarele programe
medii. Aplicațiile pot folosi sysconf() sau getconf pentru a determina ce programare
mediile sunt suportate.

Tabel 4-4: Programare medii: Tip Dimensiuni

┌────────────────────────┬─────────┬─────────┬──── ─────┬─────────┐
Programare Mediu inconjuratorbiţi inbiţi inbiţi inbiţi in
getconf Nume si Prenumeintlungindicatoruloff_t
├────────────────────────┼─────────┼─────────┼──── ─────┼─────────┤
│_POSIX_V7_ILP32_OFF32 │ 32 │ 32 │ 32 │ 32 │
│_POSIX_V7_ILP32_OFFBIG │ 32 │ 32 │ 32 │ ≥64 │
│_POSIX_V7_LP64_OFF64 │ 32 │ 64 │ 64 │ 64 │
│_POSIX_V7_LPBIG_OFFBIG │ ≥32 │ ≥64 │ ≥64 │ ≥64 │
└────────────────────────┴─────────┴─────────┴──── ─────┴─────────┘
Toate implementările trebuie să accepte unul sau mai multe medii în care lățimea
următoarele tipuri nu sunt mai mari decât lățimea tipului lung:

blksiize_t ptrdiff_t tcflag_t
cc_t mărime_t wchar_t
mode_t viteza_t wint_t
nfds_t dimensiunea_t
pid_t suseconds_t

Fișierele executabile create atunci când aceste medii sunt selectate vor fi într-un mod adecvat
format pentru executare de către Exec familie de funcții. Fiecare mediu poate fi unul dintre
cele din Tabel 4-4, Programare medii: Tip Dimensiuni, sau poate fi un alt mediu.
Denumirile pentru mediile care îndeplinesc această cerință vor fi afișate de către a getconf
comanda folosind argumentul POSIX_V7_WIDTH_RESTRICTED_ENVS, ca a -listă separată
de nume potrivite pentru utilizare cu getconf −v opțiune. Dacă se întâlnesc mai multe medii
cerința, numele tuturor acestor medii vor fi afișate pe linii separate. Orice
dintre aceste nume pot fi apoi folosite într-un ulterior getconf comanda pentru a obține steagurile
specifice mediului respectiv, cu următoarele sufixe adăugate după caz:

_CFLAGS Pentru a obține steagurile compilatorului C.

_LDFLAGS Pentru a obține steagurile linker/loader.

_LIBS Pentru a obține bibliotecile.

Această cerință poate fi eliminată într-o versiune viitoare.

Când acest utilitar procesează un fișier care conține o funcție numită principal(), ar trebui sa fie
definit cu un tip de returnare echivalent cu int. Folosind revenirea de la apelul inițial la
principal() va fi echivalent (altul decât în ​​ceea ce privește aspectele legate de domeniul lingvistic) cu apelarea
ieşire() cu valoarea returnată. Se ajunge la sfârșitul apelului inițial către principal() ar trebui sa fie
echivalent cu apelarea ieşire(0). Implementarea nu va declara un prototip pentru aceasta
Funcția.

Implementările furnizează șiruri de configurare pentru steaguri de compilator C, steaguri de linker/încărcare,
și biblioteci pentru fiecare mediu suportat. Când o aplicație trebuie să utilizeze un anumit
mediu de programare mai degrabă decât mediul de programare implicit de implementare
în timpul compilarii, aplicația trebuie să verifice mai întâi dacă implementarea acceptă
mediul dorit. Dacă mediul de programare dorit este acceptat, aplicația
va invoca apoi c99 cu steaguri de compilator C adecvate ca primele opțiuni pentru
compila, linker-ul/loader-ul corespunzător marchează după orice alte opțiuni, cu excepția −l dar înainte
orice operanzi sau −l opțiuni și bibliotecile corespunzătoare la sfârșitul operanzilor și
−l opțiuni.

Aplicațiile conforme nu vor încerca să conecteze fișierele obiect compilate pentru
diferite modele de programare. Aplicațiile trebuie să știe, de asemenea, că datele binare introduse în
memoria partajată sau în fișiere s-ar putea să nu fie recunoscute de aplicațiile create pentru altele
modele de programare.

Tabel 4-5: Programare medii: c99 Argumente

┌────────────────────────┬─────────────────────┬── ─────────────────────────────┐
Programare Mediu inconjurator │ │ c99 Argumente
getconf Nume si PrenumeUtilizaregetconf Nume si Prenume
├────────────────────────┼─────────────────────┼── ─────────────────────────────┤
│_POSIX_V7_ILP32_OFF32 │ Semnale de compilare C │ POSIX_V7_ILP32_OFF32_CFLAGS │
│ │ Steaguri Linker/Loader │ POSIX_V7_ILP32_OFF32_LDFLAGS │
│ │ Biblioteci │ POSIX_V7_ILP32_OFF32_LIBS │
├────────────────────────┼─────────────────────┼── ─────────────────────────────┤
│_POSIX_V7_ILP32_OFFBIG │ Semnale de compilare C │ POSIX_V7_ILP32_OFFBIG_CFLAGS │
│ │ Steaguri Linker/Loader │ POSIX_V7_ILP32_OFFBIG_LDFLAGS │
│ │ Biblioteci │ POSIX_V7_ILP32_OFFBIG_LIBS │
├────────────────────────┼─────────────────────┼── ─────────────────────────────┤
│_POSIX_V7_LP64_OFF64 │ Semnale de compilare C │ POSIX_V7_LP64_OFF64_CFLAGS │
│ │ Steaguri Linker/Loader │ POSIX_V7_LP64_OFF64_LDFLAGS │
│ │ Biblioteci │ POSIX_V7_LP64_OFF64_LIBS │
├────────────────────────┼─────────────────────┼── ─────────────────────────────┤
│_POSIX_V7_LPBIG_OFFBIG │ Semnale de compilare C │ POSIX_V7_LPBIG_OFFBIG_CFLAGS │
│ │ Steaguri Linker/Loader │ POSIX_V7_LPBIG_OFFBIG_LDFLAGS │
│ │ Biblioteci │ POSIX_V7_LPBIG_OFFBIG_LIBS │
└────────────────────────┴─────────────────────┴── ─────────────────────────────┘
În plus față de mediile de programare cu dimensiunea tipului de mai sus, toate implementările, de asemenea
acceptă un mediu de programare cu mai multe fire care este ortogonal cu toate
mediile de programare enumerate mai sus. The getconf utilitarul poate fi folosit pentru a obține steaguri pentru
mediul de programare threaded, așa cum este indicat în Tabel 4-6, Filetat Programare
Mediu inconjurator: c99 Argumente.

Tabel 4-6: Filetat Programare Mediu inconjurator: c99 Argumente

┌────────────────────────┬─────────────────────┬── ────────────────────────┐
Programare Mediu inconjurator │ │ c99 Argumente
getconf Nume si PrenumeUtilizaregetconf Nume si Prenume
├────────────────────────┼─────────────────────┼── ────────────────────────┤
│_POSIX_THREADS │ Semnale de compilare C │ POSIX_V7_THREADS_CFLAGS │
│ │ Steaguri Linker/Loader │ POSIX_V7_THREADS_LDFLAGS │
└────────────────────────┴─────────────────────┴── ────────────────────────┘
Aceste steaguri de mediu de programare pot fi utilizate împreună cu orice dimensiune de tip
medii de programare susținute de implementare.

EXIT STAREA


Următoarele valori de ieșire vor fi returnate:

0 Compilare reușită sau editare a linkului.

>0 A apărut o eroare.

CONSECINȚE OF ERORI


Cand c99 întâmpină o eroare de compilare care face ca un fișier obiect să nu fie creat, it
va scrie o eroare standard de diagnosticare și va continua să compilați alt cod sursă
operanzi, dar nu va efectua faza de legătură și nu va returna o stare de ieșire diferită de zero. Dacă
editarea linkului nu a reușit, va fi scris un mesaj de diagnosticare la eroare standard și
c99 ieșiri cu un statut diferit de zero. O cerere conformă se bazează pe statutul de ieșire
of c99, mai degrabă decât pe existența sau modul fișierului executabil.

următor secțiuni sunt informativ.

APLICARE UTILIZARE


Deoarece c99 utilitarul creează de obicei fișiere în directorul curent în timpul
proces de compilare, este de obicei necesar să rulați c99 utilitar într-un director în
care poate fi creat un fișier.

Pe sistemele care furnizează conformitate POSIX (a se vedea volumul Definiții de bază din POSIX.1‐2008,
Capitol 2, Conformitate cu normele), c99 este necesar doar cu opțiunea C-Language Development; XSI-
sistemele conforme oferă întotdeauna c99.

S-au creat unele implementări istorice .o fisiere cand −c nu este specificat si mai mult
este dat decât un fișier sursă. Deoarece această zonă este lăsată nespecificată, aplicația nu poate
a te baza pe .o fișierele în curs de creare, dar trebuie, de asemenea, pregătite pentru orice conexe .o dosare care
există deja fiind șterse la finalizarea editării linkului.

Există posibila implicație că dacă un utilizator furnizează versiuni ale standardului
funcții (înainte de a fi întâlnite de un implicit −l c sau explicit −l m), acea
acele versiuni ar fi utilizate în locul versiunilor standard. Există diverse motive
acest lucru ar putea să nu fie adevărat (funcții definite ca macrocomenzi, manipulări pentru spațiu de nume curat,
și așa mai departe), deci existența fișierelor numite în același mod ca bibliotecile standard
în cadrul −L directoarele este declarat în mod explicit pentru a produce un comportament nespecificat.

Toate funcțiile specificate în volumul Interfețe de sistem din POSIX.1‐2008 pot fi realizate
vizibil de implementări atunci când se caută în Biblioteca Standard C. Conform
aplicațiile trebuie să solicite în mod explicit căutarea celorlalte biblioteci standard atunci când funcții
făcute vizibile de acele biblioteci sunt utilizate.

În standardul ISO C, maparea de la caracterele sursă fizică la sursa C
setul de caractere este definit de implementare. Implementările pot elimina caracterele cu spații albe
înainte de terminare a unei linii (fizice) ca parte a acestei cartografieri și, ca a
drept consecință, unul sau mai multe caractere cu spațiu alb (și niciun alt caracter) între
A caracterul și cel caracterul care termină linia produce
rezultate definite de implementare. Aplicațiile portabile nu ar trebui să utilizeze astfel de construcții.

niste c99 compilatoarele care nu sunt conforme cu POSIX.1‐2008 nu acceptă trigrafe în mod implicit.

EXEMPLE


1. Următorul exemplu de utilizare este compilat foo.c și creează fișierul executabil foo:

c99 −o foo foo.c

Următorul exemplu de utilizare este compilat foo.c și creează fișierul obiect foo.o:

c99 −c foo.c

Următorul exemplu de utilizare este compilat foo.c și creează fișierul executabil a.out:

c99 foo.c

Următorul exemplu de utilizare este compilat foo.c, îl leagă cu bar.o, și creează
fisier executabil a.out. De asemenea, poate crea și părăsi foo.o:

c99 foo.c bar.o

2. Următorul exemplu arată cum poate testa o aplicație care utilizează interfețe de fire
suport și utilizarea unui mediu de programare care acceptă 32 de biți int, lung, și indicatorul
tipuri și an off_t tastați folosind cel puțin 64 de biți:

offbig_env=$(getconf _POSIX_V7_ILP32_OFFBIG)
if [ $offbig_env != „-1” ] && [ $offbig_env != "nedefinit" ]
apoi
c99 $(getconf POSIX_V7_ILP32_OFFBIG_CFLAGS) \
$(getconf POSIX_V7_THREADS_CFLAGS) -D_XOPEN_SOURCE=700 \
$(getconf POSIX_V7_ILP32_OFFBIG_LDFLAGS) \
$(getconf POSIX_V7_THREADS_LDFLAGS) foo.c -o foo \
$(getconf POSIX_V7_ILP32_OFFBIG_LIBS) \
-l pthread
altfel
ecou ILP32_OFFBIG de programare mediu inconjurator nu sprijinite
ieşire 1
fi

3. Următoarele exemple clarifică utilizarea și interacțiunile −L și −l opțiuni.

Luați în considerare cazul în care modul ac funcția de apeluri f() în bibliotecă libQ.a, și modul
bc funcția de apeluri g() în bibliotecă libp.a. Să presupunem că ambele biblioteci se află în
/a/b/c. Linia de comandă pentru a compila și a lega în modul dorit este:

c99 −L /a/b/c principal.o ac −l Q bc −l p

În acest caz −L opțiunea trebuie doar să precedă prima −l opțiune, deoarece ambele libQ.a
și libp.a locuiesc în același director.

Multiplu −L opțiunile pot fi utilizate atunci când apar coliziuni de nume de bibliotecă. Construindu-se pe
exemplul anterior, să presupunem că utilizatorul dorește să folosească un nou libp.a, În /a/a/a, Dar
mai vrea f() din /a/b/c/libQ.a:

c99 −L /a/a/a −L /a/b/c principal.o ac −l Q bc −l p

În acest exemplu, linkerul caută −L opțiuni în ordinea specificată și găsește
/a/a/a/libp.a înainte /a/b/c/libp.a la rezolvarea referințelor pentru bc. Ordinul de
il −l opțiunile sunt totuși importante.

4. Următorul exemplu arată cum o aplicație poate folosi un mediu de programare unde
lățimile următoarelor tipuri: blksiize_t, cc_t, mode_t, nfds_t, pid_t, ptrdiff_t,
mărime_t, viteza_t, dimensiunea_t, suseconds_t, tcflag_t, wchar_t, wint_t

nu sunt mai mari decât lățimea tipului lung:

# First alege unu of il enumerate medii ...

# ... dacă nu există constrângeri suplimentare, prima va face:
CENV=$(getconf POSIX_V7_WIDTH_RESTRICTED_ENVS | head -nl)

# ... sau, dacă se preferă un mediu care acceptă fișiere mari,
# caută nume care conțin „OFF64” sau „OFFBIG”. (Acesta alege
# ultimul din listă dacă niciunul nu se potrivește.)
pentru CENV în $(getconf POSIX_V7_WIDTH_RESTRICTED_ENVS)
do
caz $CENV în
*OFF64*|*OFFBIG*) pauză ;;
ESAC
făcut

# Numele mediului ales poate fi folosit acum astfel:

c99 $(getconf ${CENV}_CFLAGS) -D _POSIX_C_SOURCE=200809L \
$(getconf ${CENV}_LDFLAGS) foo.c -o foo \
$(getconf ${CENV}_LIBS)

FUNDAMENTARE


c99 utilitatea se bazează pe c89 utilitate introdusă inițial în ISO POSIX‐2:1993
standardul.

Unele dintre modificările de la c89 includ capacitatea de a intercala opțiuni și operanzi
(care multe c89 implementari permise in ciuda faptului ca nu a fost specificat), descrierea
of −l ca opțiune în loc de operand și modificarea conținutului
Secțiunea Biblioteci standard pentru a ține cont de noile anteturi și opțiuni; de exemplu,
adăugat la descrierea lui −l rt, și −l urmări adăugat pentru opțiunea Urmărire.

POSIX.1‐2008 precizează că c99 utilitarul trebuie să poată folosi fișiere obișnuite pentru *.o
fișiere și pentru a.out fișiere. Implementările sunt libere să suprascrie fișierele existente ale altora
tipuri atunci când încercați să creați fișiere obiect și fișiere executabile, dar nu sunt obligatorii
face acest lucru. Dacă este specificat altceva decât un fișier obișnuit și folosirea lui eșuează pentru oricare
motiv, c99 este necesar pentru a emite un mesaj de diagnosticare și a ieși cu o ieșire diferită de zero
stare. Dar pentru unele tipuri de fișiere, este posibil ca problema să nu fie observată mult timp. Pentru
exemplu, dacă se numește un FIFO a.out există în directorul curent, c99 poate încerca să se deschidă
a.out și va atârna în deschide() apel până când un alt proces deschide FIFO pentru citire.
"Atunci c99 poate scrie majoritatea a.out la FIFO și eșuează când încearcă să caute înapoi aproape
la începutul fișierului pentru a insera un marcaj de timp (FIFO-urile nu sunt fișiere care pot fi căutate). The c99
utilitarului i se permite, de asemenea, să emită un diagnostic imediat dacă întâlnește un a.out or *.o
fișier care nu este un fișier obișnuit. Pentru utilizare portabilă, aplicațiile ar trebui să se asigure că orice
a.out, −o opțiune-argument, sau *.o fisiere corespunzatoare oricarei *.c fișierele nu intră în conflict
cu nume deja utilizate care nu sunt fișiere obișnuite sau legături simbolice către care indică
fișiere obișnuite.

Pe multe sisteme, aplicațiile cu mai multe fire rulează într-un mediu de programare, adică
diferit de cel folosit de aplicațiile cu un singur fir. Această programare cu mai multe fire
mediu (pe lângă necesitatea de a specifica −l pthread la momentul link-ului) poate necesita
steaguri suplimentare care trebuie setate atunci când anteturile sunt procesate în timpul compilării (−D_REENTRANT fiind
uzual). Acest mediu de programare este ortogonal cu programarea mărimii tipului
mediile discutate mai sus și enumerate în Tabel 4-4, Programare medii: Tip
Dimensiuni. Această versiune a standardului adaugă getconf apeluri de utilitate pentru a furniza compilatorul C
steaguri și steaguri linker/loader necesare pentru a suporta aplicații cu mai multe fire. Rețineți că pe
un sistem în care aplicațiile cu un singur thread sunt un caz special al unui multi-thread
aplicare, ambele getconf apelurile pot returna șiruri NULL; pe alte implementări
ambele aceste șiruri pot fi șiruri non-NULL.

Comitetul de standardizare C a inventat trigrafe (de exemplu, "??!" a reprezenta '|') Pentru a
abordarea problemelor de portabilitate a caracterelor în medii de dezvoltare bazate pe național
variante ale setului de caractere standard ISO/IEC 7:646 pe 1991 biți. Cu toate acestea, aceste medii
erau deja învechite în momentul publicării primului standard ISO C și în practică
trigrafele nu au fost utilizate în scopul propus și, de obicei, sunt destinate să aibă
semnificația lor inițială în K&R C. De exemplu, în practică, un șir sursă în limbaj C ca
"Ce??!" este de obicei destinat să se termine în două personaje și an
, nu în '|'.

VIITOR INSTRUCTIUNI


Nici unul.

Utilizați c99posix online folosind serviciile onworks.net


Servere și stații de lucru gratuite

Descărcați aplicații Windows și Linux

Comenzi Linux

Ad