Come usare il compilatore C online
- Scrivi o incolla un programma C con una funzione
mainnell'editor. Ripristina esempio riporta il programma iniziale. - Se il programma legge l'input con
scanf,getcharofgets, digitalo nella casella Input (stdin) sotto l'output prima di eseguirlo. - Premi Esegui o usa Ctrl + Invio (⌘ + Invio su Mac). Il codice viene prima compilato e poi eseguito, ed entrambi i passaggi riportano i risultati nel pannello Output.
- Scegli un limite di tempo di 5, 15 o 60 secondi. Un ciclo infinito viene fermato quando si raggiunge il limite, e Interrompi termina subito un'esecuzione.
La prima esecuzione scarica il compilatore, circa 30 MB. Il browser lo mette in cache, e da quel momento in poi un programma tipico si compila in molto meno di un secondo. Usa Copia o main.c per salvare il file sorgente, A− e A+ per cambiare la dimensione del testo, il pulsante del layout per mettere editor e output affiancati o uno sopra l'altro, e Schermo intero (Ctrl/⌘ + Maiusc + F, Esc per uscire) per avere più spazio.
Compilazione ed esecuzione avvengono entrambe dentro il tuo browser. Il tuo codice non viene mai inviato a un server. L'editor conserva il tuo ultimo programma nella memoria locale del browser, e in nessun altro posto.
Come funziona e cosa è supportato
È un vero compilatore, non un interprete che imita il C. La pagina esegue Clang/LLVM 21, a sua volta compilato in WebAssembly dal progetto YoWASP. Clang trasforma main.c in un programma WebAssembly (WASI), che poi il browser esegue. Le opzioni del compilatore sono:
clang main.c -std=c17 -O2 -Wall -lm -o main.wasm
- C17 con ottimizzazione (
-O2) e gli avvisi comuni (-Wall) attivati. - La libreria standard del C di wasi-libc:
stdio.h,stdlib.h,string.h,ctype.h,stdint.h,time.he altre. La libreria matematica è collegata, quindisqrt,powesindimath.hfunzionano senza dover aggiungere-lm. - Diagnostica esatta: errori e avvisi vengono mostrati così come li stampa Clang, con le posizioni
main.c:line:column. - Codici di uscita: se
mainrestituisce un valore diverso da 0, l'output termina con Processo terminato con codice N.
Limiti di una sandbox nel browser:
- Niente thread.
pthread.hnon è disponibile. - Niente socket né accesso alla rete, e niente
forkoexec. - Nessun vero file system. Non puoi aprire file sul tuo computer, quindi usa lo stdin o dati inseriti nel sorgente.
- Nessuna libreria grafica o GUI come SDL, OpenGL o
conio.h/graphics.h. L'output è testo semplice.
Errori comuni in C che il compilatore ti aiuta a individuare
Controlla cosa restituisce scanf. Restituisce il numero di valori letti, non il valore stesso. Se la casella stdin è vuota o contiene testo dove ci si aspetta un numero, la variabile mantiene il valore che aveva prima, che può essere un valore casuale. Il programma iniziale mostra lo schema sicuro:
int n;
if (scanf("%d", &n) != 1) {
fprintf(stderr, "expected a number\n");
return 1; /* riportato come codice di uscita 1 */
}
Abbina gli specificatori di formato di printf ai loro tipi. Usa %d per int, %ld per long, %lld per long long, %zu per size_t, %f per double e %c per un carattere. Con -Wall, Clang avvisa in caso di discrepanza, ad esempio se stampi un double con %d, quindi leggi gli avvisi anche quando il programma funziona.
Attenzione all'overflow degli interi. Un int a 32 bit si ferma a 2.147.483.647, e l'overflow con segno è un comportamento indefinito in C. Con -O2 l'ottimizzatore può presumere che non avvenga mai, quindi un ciclo che va in overflow può comportarsi in modo strano invece di ripartire semplicemente dal valore minimo. Usa long long (o int64_t di stdint.h) per fattoriali, grandi somme e prodotti.
long long f = 1;
for (int i = 2; i <= 20; i++) f *= i;
printf("20! = %lld\n", f); /* 2432902008176640000 */
#include mancante, per esempio stdlib.h per malloc o string.h per strlen.Domande frequenti
Quale compilatore e quale standard C usa?
Clang 21 (LLVM) in modalità C17, con -O2 -Wall. La maggior parte del codice scritto per GCC si compila senza modifiche, purché rispetti il C standard ed eviti header specifici di una piattaforma.
Il mio codice viene caricato da qualche parte?
No. Il compilatore stesso gira nel tuo browser, quindi il codice sorgente, il programma compilato e il suo output restano tutti sul tuo dispositivo.
Come passo l'input al mio programma?
Digitalo nella casella stdin prima di premere Esegui. I valori possono essere separati da spazi o da nuove righe, proprio come quando li digiti in un terminale. Quando l'input finisce, scanf restituisce EOF.
Perché il mio programma si ferma con un messaggio di limite di tempo?
È rimasto in esecuzione più a lungo del limite scelto, il che di solito indica un ciclo che non finisce mai. Controlla la condizione del ciclo, oppure scegli 60 s per calcoli davvero lunghi.
Posso compilare C++ qui?
Usa il compilatore C++ online, che esegue lo stesso Clang in modalità C++20. Per altri linguaggi, guarda tutti i compilatori online.
Aggiornato