IngleseFranceseSpagnolo

Ad


Favicon di OnWorks

c99posix - Online nel cloud

Esegui c99posix nel provider di hosting gratuito OnWorks su Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

Questo è il comando c99posix che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

PROGRAMMA:

NOME


c99: compila programmi C standard

SINOSSI


c99 [Opzioni...] pathname [[pathname] [−io elenco]
[-L elenco] [-l biblioteca]]...

DESCRIZIONE


I c99 l'utilità è un'interfaccia per il sistema di compilazione C standard; accetterà
codice sorgente conforme allo standard ISO C. Il sistema concettualmente è composto da a
compilatore ed editor di collegamenti. I file di input a cui fa riferimento pathname operandi e -l opzione-
gli argomenti devono essere compilati e collegati per produrre un file eseguibile. (Non è specificato
se il collegamento avviene interamente all'interno dell'operazione di c99; alcune implementazioni potrebbero
produrre oggetti che non vengono completamente risolti finché il file non viene eseguito.)

Se l' -c è specificata l'opzione per tutti gli operandi del nome percorso del modulo filetto.c, i file:

$(nome base pathname .c).o

sarà creato a seguito della compilazione avvenuta con successo. Se la -c l'opzione non è
specificato, non è specificato se tale .o i file vengono creati o eliminati per il filetto.c
operandi.

Se non ci sono opzioni che impediscono la modifica del collegamento (come -c or -E) e tutti i file di input
compilare e collegare senza errori, il file eseguibile risultante dovrà essere scritto in conformità
Vai all’email -o file di uscita opzione (se presente) o al file a. fuori.

Il file eseguibile dovrà essere creato come specificato in Sezione 1.1.1.4, Compila il Leggi, Scrivi,
ed coerenti, tranne che i bit di autorizzazione del file devono essere impostati su: S_IRWXO | S_IRWXG |
S_IRWXU

e i bit specificati da umask del processo deve essere cancellato.

VERSIONI


I c99 l'utilità deve essere conforme al volume delle definizioni di base di POSIX.1‐2008, Sezione
12.2, Utilità Sintassi Linee Guida, salvo che:

* Le opzioni possono essere intervallate da operandi.

* L'ordine in cui si specifica il -L ed -l opzioni e l'ordine di specificazione -l Opzioni
rispetto a pathname operandi è significativo.

* Le domande conformi devono specificare ciascuna opzione separatamente; cioè, opzione di raggruppamento
lettere (ad esempio, −cO) non deve essere riconosciuto da tutte le implementazioni.

Sono supportate le seguenti opzioni:

-c Sopprimere la fase di link-edit della compilation e non rimuovere alcun oggetto
file che vengono prodotti.

−D Nome[=APPREZZIAMO]
Define Nome come se fosse un linguaggio C #define direttiva. Se no =APPREZZIAMO è dato, a
deve essere utilizzato il valore 1. IL −D l'opzione ha una precedenza inferiore rispetto a -U opzione.
Cioè, se Nome è utilizzato sia in a -U e −D opzione, Nome sarà indefinito
indipendentemente dall'ordine delle opzioni. Ulteriore implementazione definita Nomes
possono essere forniti dal compilatore. Le implementazioni dovranno supportare almeno il 2048
byte di −D definizioni e 256 nomi.

-E Copia i file sorgente in linguaggio C sull'output standard, espandendo tutto il preprocessore
direttive; non verrà effettuata alcuna compilazione. Se un operando non è un testo
file, gli effetti non sono specificati.

-g Produrre informazioni simboliche nell'oggetto o nei file eseguibili; la natura di
queste informazioni non sono specificate e possono essere modificate dall'implementazione definita
interazioni con altre opzioni.

−io elenco
Modificare l'algoritmo per la ricerca delle intestazioni i cui nomi non sono assoluti
percorsi da cercare nella directory denominata dal file elenco nome del percorso prima
cercando nei soliti posti. Pertanto, le intestazioni i cui nomi sono racchiusi tra doppie
citazioni ("") dovrà essere cercato prima nella directory del file con estensione
#includere linea, quindi nelle directory denominate in −io opzioni e ultimo nel solito
luoghi. Per le intestazioni i cui nomi sono racchiusi tra parentesi angolari ("<>"), La
l'intestazione deve essere cercata solo nelle directory indicate in −io opzioni e poi dentro
i soliti posti. Directory denominate in −io le opzioni devono essere cercate nell'ordine
specificato. Se la −io l'opzione viene utilizzata per specificare una directory che è una delle
soliti luoghi cercati per impostazione predefinita, i risultati non sono specificati. Implementazioni
dovrà supportare almeno dieci istanze di questa opzione in una singola c99 command
invocazione.

-L elenco
Cambia l'algoritmo di ricerca delle librerie nominate nel file -l oggetti a
cerca nella directory denominata da elenco percorso prima di cercare nel file
soliti posti. Directory denominate in -L le opzioni devono essere cercate nell'ordine
specificato. Se la -L l'opzione viene utilizzata per specificare una directory che è una delle
soliti luoghi cercati per impostazione predefinita, i risultati non sono specificati. Implementazioni
dovrà supportare almeno dieci istanze di questa opzione in una singola c99 command
invocazione. Se una directory specificata da a -L l'opzione contiene file con nomi
iniziando con una qualsiasi delle stringhe "lib.", "libero.", "thread di libreria.", "libmo.",
"libro.", "libtrace.", "libxnet.", o "libia.", i risultati non sono specificati.

-l biblioteca
Cerca nella libreria denominata libreria.a. Una biblioteca sarà perquisita quando è
name viene incontrato, quindi il posizionamento di a -l l'opzione è significativa. Parecchi
le librerie standard possono essere specificate in questo modo, come descritto nel file EXTENDED
Sezione DESCRIZIONE. Le implementazioni possono riconoscere l'implementazione definita
suffissi diversi da .a come denota biblioteche.

-O livello opt
Specificare il livello di ottimizzazione del codice. Se la livello opt opzione-argomento è il
cifra '0', tutte le ottimizzazioni speciali del codice devono essere disabilitate. Se è la cifra
'1', la natura dell'ottimizzazione non è specificata. Se la -O l'opzione è omessa,
la natura dell'ottimizzazione predefinita del sistema non è specificata. è
non specificato se codice generato in presenza del -O 0 l'opzione è la
uguale a quello generato quando -O è omesso. Altro livello opt i valori possono essere
supportato.

-o file di uscita
Usa il percorso file di uscita, invece dell'impostazione predefinita a. fuori, per il file eseguibile
prodotto. Se la -o l'opzione è presente con -c or -E, il risultato non è specificato.

-s Produrre file oggetto o eseguibili, o entrambi, da cui simbolico e altro
informazioni non necessarie per la corretta esecuzione utilizzando il exec famiglia definita in
il volume System Interfaces di POSIX.1‐2008 è stato rimosso (strippato). Se
entrambi -g ed -s sono presenti opzioni, l'azione intrapresa non è specificata.

-U Nome Rimuovere qualsiasi definizione iniziale di Nome.

Più istanze di −D, −io, -L, -le -U le opzioni possono essere specificate.

OPERANDI


La domanda deve garantire che almeno uno pathname l'operando è specificato. IL
seguenti moduli per pathname gli operandi devono essere supportati:

file.c Un file sorgente in linguaggio C da compilare e facoltativamente collegato. L'applicazione
deve garantire che l'operando sia in questa forma se il -c viene utilizzata l'opzione.

file.a Una libreria di file oggetto tipicamente prodotta da ar utilità e superato
direttamente all'editor dei collegamenti. Le implementazioni possono riconoscere l'implementazione-
suffissi definiti diversi da .a come denota le librerie di file oggetto.

file.o Un file oggetto prodotto da c99 -c e passato direttamente all'editor di link.
Le implementazioni possono riconoscere suffissi definiti dall'implementazione diversi da .o as
denotando i file oggetto.

L'elaborazione di altri file è definita dall'implementazione.

STDIN


Non usato.

INGRESSO FILE


Ciascun file di input dovrà essere uno dei seguenti: un file di testo contenente un sorgente in linguaggio C
programma, un file oggetto nel formato prodotto da c99 -co una libreria di file oggetto, in
il formato prodotto archiviando zero o più file oggetto, utilizzando ar. Le implementazioni possono
fornire utilità aggiuntive che producono file in questi formati. File di input aggiuntivo
i formati sono definiti dall'implementazione.

AMBIENTE VARIABILI


Le seguenti variabili d'ambiente influiranno sull'esecuzione di c99:

LUNGO Fornire un valore predefinito per le variabili di internazionalizzazione non impostate o
nullo. (Vedi il volume Definizioni di base di POSIX.1-2008, Sezione 8.2,
Internazionalizzazione Variabili per il primato dell'internazionalizzazione
variabili utilizzate per determinare i valori delle categorie locali.)

LC_TUTTI Se impostato su un valore di stringa non vuoto, sovrascrive i valori di tutti gli altri
variabili di internazionalizzazione.

LC_CTYPE Determinare la localizzazione per l'interpretazione di sequenze di byte di dati di testo
come caratteri (ad esempio, caratteri a byte singolo anziché caratteri multibyte in
argomenti e file di input).

LC_MESSAGGI
Determinare la localizzazione che dovrebbe essere usata per influenzare il formato e il contenuto di
messaggi di diagnostica scritti nell'errore standard.

NLSPATH Determinare la posizione dei cataloghi dei messaggi per l'elaborazione di LC_MESSAGGI.

TMPDIR Fornire un nome percorso che dovrebbe sovrascrivere la directory predefinita per i file temporanei
file, se presenti. Sui sistemi conformi a XSI, fornire un nome percorso che deve
sovrascrivere la directory predefinita per i file temporanei, se presenti.

ASINCRONO EVENTI


Predefinito.

STDOUT


Se più di uno pathname operando che termina in .c (o eventualmente altri suffissi non specificati) è
dato, per ciascuno di questi file:

"%s:\n", <pathname>

può essere scritto. Tali messaggi, se scritti, precederanno l'elaborazione di ciascun input
file; non dovranno essere scritti sullo standard output se sono scritti sullo standard
errore, come descritto nella sezione STDERR.

Se l' -E è specificata l'opzione, l'output standard sarà un file di testo che rappresenta
i risultati della fase di preelaborazione del linguaggio; potrebbe contenere informazioni aggiuntive
idonei per successivi passaggi di compilazione.

Stderr


L'errore standard deve essere utilizzato solo per i messaggi di diagnostica. Se più di uno pathname
operando che termina in .c (o eventualmente altri suffissi non specificati), per ciascuno di essi
file:

"%s:\n", <pathname>

può essere scritto per consentire l'identificazione dei messaggi diagnostici e di avviso con
file di input appropriato. Tali messaggi, se scritti, precederanno l'elaborazione di ciascuno
file di input; non devono essere scritti nell'errore standard se sono scritti nel file
output standard, come descritto nella sezione STDOUT.

Questa utilità può produrre messaggi di avviso su determinate condizioni che non garantiscono
restituendo un valore di uscita di errore (diverso da zero).

USCITA FILE


File oggetto o file eseguibili o entrambi vengono prodotti in formati non specificati. Se la
nome del percorso di un file oggetto o di un file eseguibile da creare c99 si risolve in un esistente
voce di directory per un file che non è un file normale, non è specificato se c99 deve
tentare di creare il file o emettere una diagnostica ed uscire con un'uscita diversa da zero
stato.

EXTENDED DESCRIZIONE


Standard Biblioteche
I c99 l'utilità deve riconoscere quanto segue -l opzioni per le librerie standard:

-l c Questa opzione renderà disponibili tutte le interfacce a cui si fa riferimento nel sistema
Volume delle interfacce di POSIX.1‐2008, con la possibile eccezione di quelle
interfacce elencate come residenti in , , , ,
, , , , , ,
, , , , pthread_kill(), e
pthread_sigmask() nel , , interfacce contrassegnate come opzionali in
, le interfacce contrassegnate come ADV (Advisory Information) in e
interfacce che iniziano con il prefisso clock_ o time_ in . Questa opzione
non sarà necessario essere presenti per effettuare una ricerca in questa biblioteca.

-l l Questa opzione renderà disponibili tutte le interfacce richieste dal linguaggio C
uscita di lex che non sono resi disponibili tramite il -l c opzione.

-l pthread
Questa opzione renderà disponibili tutte le interfacce a cui si fa riferimento ed
pthread_kill() e pthread_sigmask() citato in È stato anche creato un
l'implementazione può cercare in questa libreria in assenza di questa opzione.

-l m Questa opzione renderà disponibili tutte le interfacce a cui si fa riferimento ,
e . Un'implementazione può cercare questa libreria nel file
assenza di questa opzione.

-l rt Questa opzione renderà disponibili tutte le interfacce a cui si fa riferimento ,
, , e , interfacce contrassegnate come
opzionale dentro , le interfacce contrassegnate come ADV (Advisory Information) in
e interfacce che iniziano con il prefisso clock_ e time_ in
. Un'implementazione potrebbe cercare in questa libreria in assenza di questa
opzione.

-l tracciare Questa opzione renderà disponibili tutte le interfacce a cui si fa riferimento È stato anche creato un
l'implementazione può cercare in questa libreria in assenza di questa opzione.

-l xnet Questa opzione renderà disponibili tutte le interfacce a cui si fa riferimento ,
, , e . Un'implementazione
può eseguire la ricerca in questa libreria in assenza di questa opzione.

-l y Questa opzione renderà disponibili tutte le interfacce richieste dal linguaggio C
uscita di sì, sì che non sono resi disponibili tramite il -l c opzione.

In assenza di opzioni che inibiscono l'invocazione dell'editor di link, come ad esempio -c or -E,
, il c99 l'utilità deve causare l'equivalente di a -l c opzione da passare al collegamento
redattore dopo l'ultimo pathname operando o -l opzione, causandone la ricerca dopo tutto
vengono caricati altri file oggetto e librerie.

Non è specificato se le biblioteche libc.a, lib.a, libm.a, libpthread.a, librt.a,
libtrace.a, libxnet.a, o Libia esistono come file normali. L'implementazione può accettare come
-l argomenti-opzione nomi di oggetti che non esistono come file normali.

Esterno Simboli
Il compilatore C e l'editor di collegamento supportano il significato dei simboli esterni fino a a
lunghezza di almeno 31 byte; l'azione intrapresa quando si incontrano simboli che superano il
la lunghezza massima del simbolo definita dall'implementazione non è specificata.

Il compilatore e l'editor di collegamenti devono supportare un minimo di 511 simboli esterni per fonte o
file oggetto e un minimo di 4095 simboli esterni in totale. Verrà visualizzato un messaggio diagnostico
essere scritto sullo standard output se il limite definito dall'implementazione viene superato; altro
le azioni non sono specificate

testata Cerca
Se un file con lo stesso nome di una delle intestazioni standard definite nel file Base
Volume delle definizioni di POSIX.1‐2008, Capitolo 13, Headers, non fornito come parte del
implementazione, viene inserito in uno dei soliti posti in cui viene effettuata la ricerca per impostazione predefinita
intestazioni, i risultati non sono specificati.

Programmazione Ambienti
Tutte le implementazioni dovranno supportare uno dei seguenti ambienti di programmazione come a
predefinito. Le implementazioni possono supportare più di una delle seguenti programmazioni
ambienti. Le applicazioni possono utilizzare sysconf() o getconf per determinare quale programmazione
gli ambienti sono supportati.

Table 4-4: Programmazione ambienti: Tipologia Dimensioni

┌────────────────────────┬─────────┬───── ────┬──── ─────┬─────────┐
Programmazione AmbienteBits inBits inBits inBits in
getconf Nomeintlungopointeroff_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 │
└────────────────────────┴─────────┴───── ────┴──── ─────┴─────────┘
Tutte le implementazioni devono supportare uno o più ambienti in cui le larghezze del
i seguenti tipi non sono maggiori della larghezza del tipo lungo:

blksize_t ptrdiff_t tcflag_t
cc_t taglia_t wchar_t
modalità_t velocità_t wint_t
nfds_t taglia_t
pid_t susecondi_t

I file eseguibili creati quando vengono selezionati questi ambienti devono essere in formato corretto
formato per l'esecuzione da parte di exec famiglia di funzioni. Ogni ambiente può essere uno dei
quelli in Table 4-4, Programmazione ambienti: Tipologia Dimensioni oppure potrebbe trattarsi di un altro ambiente.
I nomi degli ambienti che soddisfano questo requisito devono essere emessi da a getconf
comando utilizzando l'argomento POSIX_V7_WIDTH_RESTRICTED_ENVS, come elenco separato da
di nomi adatti per l'uso con il getconf -v opzione. Se più di un ambiente si incontra
secondo il requisito, i nomi di tutti questi ambienti devono essere emessi su linee separate. Qualunque
di questi nomi potranno poi essere utilizzati in quelli successivi getconf comando per ottenere le bandiere
specifico per quell'ambiente con i seguenti suffissi aggiunti a seconda dei casi:

_CFLAGS Per ottenere i flag del compilatore C.

_LDFLAGS Per ottenere i flag del linker/loader.

_LIBS Per ottenere le librerie.

Questo requisito potrebbe essere rimosso in una versione futura.

Quando questa utility elabora un file contenente una funzione chiamata principale(), lo sarà
definito con un tipo restituito equivalente a int. Utilizzando return dalla chiamata iniziale a
principale() sarà equivalente (a parte le questioni relative all'ambito linguistico) alla chiamata
exit() con il valore restituito. Raggiungimento della fine della chiamata iniziale a principale() sarà
equivalente a chiamare exit(0). L'implementazione non deve dichiarare un prototipo per questo
funzione.

Le implementazioni forniscono stringhe di configurazione per flag del compilatore C, flag del linker/caricatore,
e librerie per ciascun ambiente supportato. Quando un'applicazione deve utilizzare un file specifico
ambiente di programmazione anziché l'ambiente di programmazione predefinito dell'implementazione
in fase di compilazione l'applicazione dovrà innanzitutto verificare che l'implementazione supporti il
ambiente desiderato. Se l'ambiente di programmazione desiderato è supportato, l'applicazione
invocherà quindi c99 con i flag appropriati del compilatore C come prime opzioni per il file
compile, i flag del linker/loader appropriati dopo qualsiasi altra opzione tranne -l ma prima
eventuali operandi o -l opzioni e le librerie appropriate alla fine degli operandi e
-l opzioni.

Le applicazioni conformi non dovranno tentare di collegare insieme i file oggetto compilati
diversi modelli di programmazione. Le applicazioni devono inoltre essere consapevoli che i dati binari inseriti
memoria condivisa o nei file potrebbero non essere riconosciuti dalle applicazioni create per altri
modelli di programmazione.

Table 4-5: Programmazione ambienti: c99 argomenti

┌────────────────────────┬─────────────── ──────┬── ─────────────────────────────┐
Programmazione Ambiente │ │ c99 argomenti
getconf NomeUsa il getconf Nome
├────────────────────────┼─────────────── ──────┼── ─────────────────────────────┤
│_POSIX_V7_ILP32_OFF32 │ Flag del compilatore C │ POSIX_V7_ILP32_OFF32_CFLAGS │
│ │ Flag del linker/caricatore │ POSIX_V7_ILP32_OFF32_LDFLAGS │
│ │ Librerie │ POSIX_V7_ILP32_OFF32_LIBS │
├────────────────────────┼─────────────── ──────┼── ─────────────────────────────┤
│_POSIX_V7_ILP32_OFFBIG │ Flag del compilatore C │ POSIX_V7_ILP32_OFFBIG_CFLAGS │
│ │ Flag del linker/caricatore │ POSIX_V7_ILP32_OFFBIG_LDFLAGS │
│ │ Librerie │ POSIX_V7_ILP32_OFFBIG_LIBS │
├────────────────────────┼─────────────── ──────┼── ─────────────────────────────┤
│_POSIX_V7_LP64_OFF64 │ Flag del compilatore C │ POSIX_V7_LP64_OFF64_CFLAGS │
│ │ Flag del linker/caricatore │ POSIX_V7_LP64_OFF64_LDFLAGS │
│ │ Librerie │ POSIX_V7_LP64_OFF64_LIBS │
├────────────────────────┼─────────────── ──────┼── ─────────────────────────────┤
│_POSIX_V7_LPBIG_OFFBIG │ Flag del compilatore C │ POSIX_V7_LPBIG_OFFBIG_CFLAGS │
│ │ Flag del linker/caricatore │ POSIX_V7_LPBIG_OFFBIG_LDFLAGS │
│ │ Librerie │ POSIX_V7_LPBIG_OFFBIG_LIBS │
└────────────────────────┴─────────────── ──────┴── ─────────────────────────────┘
Oltre agli ambienti di programmazione delle dimensioni del tipo sopra menzionati, anche tutte le implementazioni
supportare un ambiente di programmazione multi-thread ortogonale a tutti i
ambienti di programmazione sopra elencati. IL getconf l'utilità può essere utilizzata per ottenere flag per
l'ambiente di programmazione threaded, come indicato in Table 4-6, Filettate Programmazione
Ambiente: c99 argomenti.

Table 4-6: Filettate Programmazione Ambiente: c99 argomenti

┌────────────────────────┬─────────────── ──────┬── ────────────────────────┐
Programmazione Ambiente │ │ c99 argomenti
getconf NomeUsa il getconf Nome
├────────────────────────┼─────────────── ──────┼── ────────────────────────┤
│_POSIX_THREADS │ Flag del compilatore C │ POSIX_V7_THREADS_CFLAGS │
│ │ Flag del linker/caricatore │ POSIX_V7_THREADS_LDFLAGS │
└────────────────────────┴─────────────── ──────┴── ────────────────────────┘
Questi flag dell'ambiente di programmazione possono essere utilizzati insieme a qualsiasi dimensione del tipo
ambienti di programmazione supportati dall'implementazione.

EXIT STATUS


Devono essere restituiti i seguenti valori di uscita:

0 Compilazione o modifica del collegamento riuscita.

>0 Si è verificato un errore.

CONSEGUENZE OF ERRORI


Quando c99 rileva un errore di compilazione che impedisce la creazione di un file oggetto
scriverà una diagnostica sull'errore standard e continuerà a compilare altro codice sorgente
operandi, ma non eseguirà la fase di collegamento e restituirà uno stato di uscita diverso da zero. Se
la modifica del collegamento non ha esito positivo, verrà scritto un messaggio diagnostico sull'errore standard e
c99 esce con uno stato diverso da zero. Una domanda conforme si basa sullo status di uscita
of c99, piuttosto che sull'esistenza o sulla modalità del file eseguibile.

I i seguenti sezioni sono Informativo.

APPLICAZIONI USO


Poiché c99 l'utilità di solito crea file nella directory corrente durante il
processo di compilazione, in genere è necessario eseguire il file c99 utilità in una directory in
cui è possibile creare un file.

Sui sistemi che forniscono conformità POSIX (vedere il volume Base Definitions di POSIX.1‐2008,
Capitolo 2, conformità), c99 è richiesto solo con l'opzione Sviluppo C-Language; XSI-
i sistemi conformi forniscono sempre c99.

Sono state create alcune implementazioni storiche .o file quando -c non è specificato e altro ancora
viene fornito più di un file sorgente. Poiché quest'area non viene specificata, l'applicazione non può farlo
fare affidamento su .o file in fase di creazione, ma deve anche essere preparato per eventuali correlati .o file che
esistono già e verranno eliminati al completamento della modifica del collegamento.

Esiste la possibile implicazione che se un utente fornisce versioni dello standard
funzioni (prima che venissero incontrate da un implicit -l c o esplicito -l m), quello
tali versioni verrebbero utilizzate al posto delle versioni standard. Ci sono vari motivi
questo potrebbe non essere vero (funzioni definite come macro, manipolazioni per pulire lo spazio dei nomi,
e così via), quindi l'esistenza di file nominati allo stesso modo delle librerie standard
all'interno -L directory è esplicitamente dichiarato per produrre un comportamento non specificato.

È possibile eseguire tutte le funzioni specificate nel volume System Interfaces di POSIX.1‐2008
visibile dalle implementazioni quando viene cercata la libreria C standard. Conforme
le applicazioni devono richiedere esplicitamente la ricerca nelle altre librerie standard quando funziona
resi visibili da tali librerie.

Nello standard ISO C la mappatura dai caratteri di origine fisica all'origine C
il set di caratteri è definito dall'implementazione. Le implementazioni potrebbero eliminare i caratteri degli spazi bianchi
prima del finale di una linea (fisica) come parte di questa mappatura e, come a
di conseguenza, uno o più caratteri di spazio bianco (e nessun altro carattere) tra
vengono prodotti un carattere e il carattere che termina la riga
risultati definiti dall’implementazione. Le applicazioni portatili non dovrebbero utilizzare tali costrutti.

Alcuni c99 i compilatori non conformi a POSIX.1‐2008 non supportano i trigrafi per impostazione predefinita.

ESEMPI


1. Viene compilato il seguente esempio di utilizzo foo.c e crea il file eseguibile foo:

c99 -o foo foo.c

Il seguente esempio di utilizzo viene compilato foo.c e crea il file oggetto foo.o:

c99 -c foo.c

Il seguente esempio di utilizzo viene compilato foo.c e crea il file eseguibile a. fuori:

c99 foo.c

Il seguente esempio di utilizzo viene compilato foo.c, lo collega con bar.oe crea il file
file eseguibile a. fuori. Può anche creare e andarsene foo.o:

c99 foo.c bar.o

2. L'esempio seguente mostra come può eseguire il test un'applicazione che utilizza le interfacce thread
supportare e utilizzare un ambiente di programmazione che supporti 32 bit int, lungoe pointer
tipi e un off_t digitare utilizzando almeno 64 bit:

offbig_env=$(getconf _POSIX_V7_ILP32_OFFBIG)
if [ $offbig_env != "-1" ] && [ $offbig_env != "non definito" ]
poi
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
altro
eco ILP32_OFFBIG programmazione ambiente non supportato
exit 1
fi

3. Gli esempi seguenti chiariscono l'uso e le interazioni di -L ed -l opzioni.

Consideriamo il caso in cui module corrente alternata chiama la funzione f() in biblioteca libQ.ae modulo
bc chiama la funzione g() in biblioteca libp.a. Supponiamo che entrambe le librerie risiedano in
/a/b/c. La riga di comando per compilare e collegare nel modo desiderato è:

c99 -L /a/b/c principale.o corrente alternata -l Q bc -l p

In questo caso la -L l'opzione deve solo precedere la prima -l opzione, poiché entrambi libQ.a
ed libp.a risiedono nella stessa directory.

multiplo -L le opzioni possono essere utilizzate quando si verificano conflitti tra i nomi delle librerie. Basandosi su
esempio precedente, supponiamo che l'utente desideri utilizzare un nuovo file libp.ain /a/a/a, ma
vuole ancora f() da /a/b/c/libQ.a:

c99 -L /a/a/a -L /a/b/c principale.o corrente alternata -l Q bc -l p

In questo esempio, il linker cerca il file -L opzioni nell'ordine specificato e trova
/a/a/a/libp.a prima /a/b/c/libp.a durante la risoluzione dei riferimenti per bc. L'ordine di
, il -l le opzioni sono comunque importanti.

4. L'esempio seguente mostra come un'applicazione può utilizzare un ambiente di programmazione dove
le larghezze dei seguenti tipi: blksize_t, cc_t, modalità_t, nfds_t, pid_t, ptrdiff_t,
taglia_t, velocità_t, taglia_t, susecondi_t, tcflag_t, wchar_t, wint_t

non sono maggiori della larghezza del carattere lungo:

# Nome scegliere prima of , il elencato ambienti ...

# ... se non ci sono vincoli aggiuntivi, il primo farà:
CENV=$(getconf POSIX_V7_WIDTH_RESTRICTED_ENVS | head -nl)

# ... oppure, se si preferisce un ambiente che supporta file di grandi dimensioni,
# cerca i nomi che contengono "OFF64" o "OFFBIG". (Questo sceglie
# l'ultimo nell'elenco se nessuno corrisponde.)
per CENV in $(getconf POSIX_V7_WIDTH_RESTRICTED_ENVS)
do
caso $CENV in
*OFF64*|*OFFBIG*) interruzione ;;
che C
fatto

# Il nome dell'ambiente scelto ora può essere utilizzato in questo modo:

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

FONDAMENTO LOGICO


I c99 l'utilità si basa su c89 utilità originariamente introdotta nell'ISO POSIX‐2:1993
standard.

Alcuni dei cambiamenti da c89 includere la capacità di intervallare opzioni e operandi
(che molti c89 implementazioni consentite nonostante non sia specificato), la descrizione
of -l come opzione al posto di un operando e la modifica del contenuto del file
Sezione Librerie standard per tenere conto di nuove intestazioni e opzioni; Per esempio,
aggiunto alla descrizione di -l rte -l tracciare aggiunto per l'opzione Tracciamento.

POSIX.1‐2008 specifica che c99 l'utilità deve essere in grado di utilizzare file normali per *.o
file e per a. fuori File. Le implementazioni sono libere di sovrascrivere file esistenti di altri
tipi quando si tenta di creare file oggetto e file eseguibili, ma non è obbligatorio
fare così. Se viene specificato qualcosa di diverso da un file normale e il suo utilizzo non riesce per any
ragionare, c99 è necessario emettere un messaggio diagnostico e uscire con un'uscita diversa da zero
stato. Ma per alcuni tipi di file, il problema potrebbe non essere notato per molto tempo. Per
esempio, se una FIFO denominata a. fuori esiste nella directory corrente, c99 potrebbe tentare di aprire
a. fuori e rimarrà appeso nel aprire() chiama finché un altro processo non apre la FIFO per la lettura.
Poi c99 potrebbe scrivere la maggior parte del a. fuori al FIFO e fallisce quando tenta di riavvicinarsi
all'inizio del file per inserire un timestamp (i FIFO non sono file ricercabili). IL c99
l'utility può anche emettere immediatamente una diagnostica se incontra un file a. fuori or *.o
file che non è un file normale. Per l'uso portatile, le applicazioni dovrebbero garantire che any
a. fuori, -o argomento-opzione, o *.o file corrispondenti a qualsiasi *.C i file non sono in conflitto
con nomi già in uso che non siano file regolari o collegamenti simbolici che puntano
file regolari.

Su molti sistemi, le applicazioni multi-thread vengono eseguite in un ambiente di programmazione
distinto da quello utilizzato dalle applicazioni a thread singolo. Questa programmazione multi-thread
ambiente (oltre alla necessità di specificare -l pthread al momento del collegamento) potrebbe richiedere
flag aggiuntivi da impostare quando le intestazioni vengono elaborate in fase di compilazione (−D_RIENTRANTE essendo
comune). Questo ambiente di programmazione è ortogonale alla programmazione della dimensione del tipo
ambienti discussi sopra ed elencati in Table 4-4, Programmazione ambienti: Tipologia
Dimensioni . Questa versione dello standard aggiunge getconf chiamate di utilità per fornire il compilatore C
flag e flag linker/loader necessari per supportare applicazioni multi-thread. Notalo su
un sistema in cui le applicazioni a thread singolo sono un caso speciale di multi-thread
applicazione, entrambi getconf le chiamate possono restituire stringhe NULL; su altre implementazioni
entrambe queste stringhe possono essere stringhe non NULL.

Il comitato di standardizzazione C ha inventato i trigrafi (ad esempio, "??!" rappresentare '|') A
affrontare i problemi di portabilità dei caratteri in ambienti di sviluppo basati su nazionali
varianti del set di caratteri standard ISO/IEC 7:646 a 1991 bit. Tuttavia, questi ambienti
erano già obsoleti al momento della pubblicazione della prima norma ISO C, e nella pratica
i trigrafi non sono stati utilizzati per lo scopo previsto e di solito sono destinati ad avere
il loro significato originale in K&R C. Ad esempio, in pratica una stringa sorgente in linguaggio C come
"Che cosa??!" è solitamente destinato a terminare con due caratteri e un
, non dentro '|'.

FUTURE INDICAZIONI


Nessuno.

Utilizza c99posix online utilizzando i servizi onworks.net


Server e workstation gratuiti

Scarica app per Windows e Linux

Comandi Linux

Ad