Compilador Online

Página en desarrollo con ayuda para el compilador online de prueba

Lenguajes soportados: C, C++, Python, Lua.


C

Hay dos versiones de gcc instaladas en el servidor: gcc-4.4 y gcc-4.6.

Encabezados por defecto

C++

Hay dos versiones de g++ instaladas en el servidor: g++-4.4 y g++-4.6. Ambas usan los siguientes switches por defecto:

  • -fshort-enums — Los enums usan el menor tamaño disponible (usualmente 16 bits) en vez del tamaño de entero de máquina como mínimo.
  • -Wall — Muestra muchas de las advertencias.
Encabezados estándar por defecto <cstddef> <cstdio> <cstdlib> <cmath> <ccomplex> <ctime> <cassert> <ciso646> <cstdint>
<utility> <cerrno> <stdexcept> <type_traits> <typeinfo> <iostream>
<iterator> <array> <deque> <list> <map> <set> <unordered_map> <unordered_set> <valarray> <vector>
<algorithm> <functional> <numeric> <random> <tuple>
Otros encabezados disponibles <cxxomfort/cxxomfort.hpp>1) <cxx-prettyprint/prettyprint.hpp> <tinyformat/tinyformat.hpp>
Nononsense-Boost: <./range.hpp> <./range/irange.hpp> <./range/adapter/reverse.hpp> <./range/adapter/filter.hpp>
Encabezados disponibles con
PRELUDE_EXTRAS2)
<dynarray> <forward_list> <optional>

Las directivas using namespace std; y using namespace nononsense-boost están automáticamente en efecto.

Sintaxis

Resumen de ayudas de sintaxis:

  • VAR_DUMP(myvariable)variable : type(value)
  • TYPE( div(16990L, 232L))ldiv_t
  • CXXO_FOREACH (type v : sequence) { … }
  • CXXO_I12N_BEG(vector<int>,mylist) = {-11, -17, 4, 125, 3}; CXXO_I12N_END(vector<int>, mylist);
  • cout« FORMAT(“%s=%02d”, var.elem_string, var.elem_int)mykey=03

Impresión

Los streams cout y cerr están disponibles. Las funcionalidades de fopen y fstream no están disponibles.

Los pares (pair) y tuplas (tuple) se pueden imprimir directamente (sólo en cout o un ostream):

Entrada:

cout<< make_tuple(
    string("Nintendo Rules!"), 
    make_pair(getuid(), getpid()), 
    minstd_rand(), 2013, tuple<bool>(),
    M_PI)
    << endl;

Salida:

 (Nintendo Rules!, (33, 9584), 1, 2013, (0), 3.14159)

Los rangos y contenedores secuenciales como vector<…> se pueden imprimir directamente:

Entrada:

ranlux24_base rg(time(0));
list<uint16_t> Seq(10);
generate (begin(Seq), end(Seq), rg);
cout<< Seq<< endl;

Salida:

[7877, 48550, 42251, 55429, 34953, 36914, 22612, 55862, 58258, 23176]

La macro VAR_DUMP(variable) imprime el tipo y contenido de una variable como en PHP:

Entrada Salida

    NB::tuples::pair< int, string > five (piecewise_construct, 
      make_tuple(5),
      make_tuple(5, '*')
    );
    VAR_DUMP(five);

 five : pair11<int, std::string>((5 , *****)) 

Tipos

La macro TYPE(type) es un atajo que imprime una descripción del tipo u objeto type:

Entrada Salida
 cout<< TYPE(&system)<< endl;
 int (*)(char const*)
 cout<< TYPE(minstd_rand0)<< endl;
 std::linear_congruential_engine<unsigned int, 16807u, 0u, 2147483647u>

Formato

La macro FORMAT es un atajo para tfm::format.

Ejemplo de Código

Ejemplo de código:

int main () {
    CXXO_I12N_BEG( vector<int>, mylist ) = {4, 1, 8, 7, 12};
    CXXO_I12N_END( vector<int>, mylist );
    optional<int> oi = ...?
}

Python

FIXME

Lua

FIXME

1) , 2)
C++11/1y backports