Cómo usar el compilador de C online
- Escribe o pega un programa en C con una función
mainen el editor. Restablecer ejemplo recupera el programa inicial. - Si el programa lee datos con
scanf,getcharofgets, escríbelos en el cuadro Entrada (stdin), debajo de la salida, antes de ejecutarlo. - Pulsa Ejecutar o usa Ctrl + Enter (⌘ + Enter en Mac). Primero se compila el código y luego se ejecuta, y ambos pasos informan en el panel Salida.
- Elige un límite de tiempo de 5, 15 o 60 segundos. Un bucle infinito se detiene al alcanzar el límite, y Detener termina la ejecución al instante.
La primera ejecución descarga el compilador, de unos 30 MB. El navegador lo guarda en caché y, a partir de ahí, un programa típico compila en bastante menos de un segundo. Usa Copiar o main.c para guardar tu archivo de código fuente, A− y A+ para cambiar el tamaño del texto, el botón de diseño para colocar el editor y la salida uno al lado del otro o uno encima del otro, y Pantalla completa (Ctrl/⌘ + Shift + F, Esc para salir) para tener más espacio.
La compilación y la ejecución se hacen dentro de tu navegador. Tu código nunca se envía a un servidor. El editor guarda tu último programa en el almacenamiento local del navegador, y en ningún otro sitio.
Cómo funciona y qué admite
Es un compilador de verdad, no un intérprete que imita C. La página ejecuta Clang/LLVM 21, compilado a su vez a WebAssembly por el proyecto YoWASP. Clang convierte main.c en un programa WebAssembly (WASI) que luego ejecuta tu navegador. Las opciones del compilador son:
clang main.c -std=c17 -O2 -Wall -lm -o main.wasm
- C17 con optimización (
-O2) y las advertencias habituales (-Wall) activadas. - La biblioteca estándar de C de wasi-libc:
stdio.h,stdlib.h,string.h,ctype.h,stdint.h,time.hy más. La biblioteca matemática está enlazada, así quesqrt,powysindemath.hfuncionan sin que tengas que añadir-lm. - Diagnósticos exactos: los errores y advertencias se muestran tal como los imprime Clang, con posiciones
main.c:line:column. - Códigos de salida: si
maindevuelve un valor distinto de 0, la salida termina con El proceso terminó con el código N.
Limitaciones de un entorno aislado del navegador:
- Sin hilos.
pthread.hno está disponible. - Sin sockets ni acceso a la red, y sin
forkniexec. - Sin un sistema de archivos real. No puedes abrir archivos de tu ordenador, así que usa stdin o datos en el propio código.
- Sin bibliotecas gráficas ni de interfaz como SDL, OpenGL o
conio.h/graphics.h. La salida es texto plano.
Errores comunes en C que el compilador te ayuda a detectar
Comprueba lo que devuelve scanf. Devuelve el número de valores que ha leído, no el valor en sí. Si el cuadro stdin está vacío o contiene texto donde se espera un número, la variable conserva el valor que tuviera antes, que puede ser basura. El programa inicial muestra el patrón seguro:
int n;
if (scanf("%d", &n) != 1) {
fprintf(stderr, "expected a number\n");
return 1; /* reported as exit code 1 */
}
Haz coincidir los especificadores de formato de printf con sus tipos. Usa %d para int, %ld para long, %lld para long long, %zu para size_t, %f para double y %c para un carácter. Con -Wall, Clang avisa de discrepancias como imprimir un double con %d, así que lee las advertencias aunque el programa se ejecute.
Cuidado con el desbordamiento de enteros. Un int de 32 bits llega como máximo a 2.147.483.647, y el desbordamiento con signo es comportamiento indefinido en C. Con -O2, el optimizador puede dar por hecho que nunca ocurre, así que un bucle que se desborda puede comportarse de forma extraña en lugar de simplemente dar la vuelta al valor mínimo. Usa long long (o int64_t de stdint.h) para factoriales, sumas y productos grandes.
long long f = 1;
for (int i = 2; i <= 20; i++) f *= i;
printf("20! = %lld\n", f); /* 2432902008176640000 */
#include, por ejemplo stdlib.h para malloc o string.h para strlen.Preguntas frecuentes
¿Qué compilador y qué estándar de C usa?
Clang 21 (LLVM) en modo C17, con -O2 -Wall. La mayor parte del código escrito para GCC compila sin cambios, siempre que se ciña al C estándar y evite cabeceras específicas de una plataforma.
¿Se sube mi código a algún sitio?
No. El propio compilador se ejecuta en tu navegador, así que el código fuente, el programa compilado y su salida se quedan en tu dispositivo.
¿Cómo le doy datos de entrada a mi programa?
Escríbelos en el cuadro stdin antes de pulsar Ejecutar. Los valores pueden ir separados por espacios o saltos de línea, igual que cuando los escribes en un terminal. Cuando se acaba la entrada, scanf devuelve EOF.
¿Por qué mi programa se detiene con un mensaje de límite de tiempo?
Se ha ejecutado durante más tiempo que el límite elegido, lo que suele indicar un bucle que nunca termina. Revisa la condición del bucle, o elige 60 s para cálculos que de verdad son largos.
¿Puedo compilar C++ aquí?
Usa el compilador de C++ online, que ejecuta el mismo Clang en modo C++20. Para otros lenguajes, consulta todos los compiladores online.
Actualizado