|
5 months ago | |
---|---|---|
libigcc | 5 months ago | |
test | 14 years ago | |
.gitignore | 6 months ago | |
LICENSE | 6 months ago | |
Makefile | 6 months ago | |
README.org | 5 months ago | |
igcc.py | 6 months ago | |
test-igcc | 5 months ago | |
test-igcc-slow | 5 months ago |
README.org
Interactive GCC
Interactive GCC (igcc) is a read-eval-print loop (REPL) for C/C++ programmers.
It can be used like this:
$ ./igcc
g++> int a = 5;
g++> a += 2;
g++> cout << a << endl;
7
g++> --a;
g++> cout << a << endl;
6
g++>
It is possible to include header files you need like this:
$ ./igcc
g++> #include <vector>
g++> vector<int> myvec;
g++> myvec.push_back( 17 );
g++> printf( "%d\n", myvec.size() );
1
g++> myvec.push_back( 21 );
g++> printf( "%d\n", myvec.size() );
2
g++>
Compile errors can be tolerated until the code works:
$ ./igcc
g++> #include <map>
g++> map<string,int> hits;
g++> hits["foo"] = 12;
g++> hits["bar"] = 15;
g++> for( map<string,int>::iterator it = hits.begin(); it != hits.end(); ++it )
[Compile error - type .e to see it.]
g++> {
[Compile error - type .e to see it.]
g++> cout << it->first << " " << it->second << endl;
[Compile error - type .e to see it.]
g++> }
bar 15
foo 12
g++>
Extra include directories can be supplied:
$ ./igcc -Itest/cpp -Itest/cpp2
g++> #include "hello.h"
g++> hello();
Hello,
g++> #include "world.h"
g++> world();
world!
g++>
Libs can be linked:
$ ./igcc -lm
g++> #include "math.h"
g++> cout << pow( 3, 3 ) << endl; // Actually a bad example since libm.a is already linked in C++
27
g++>
Your own libs can be linked too:
$ ./igcc -Itest/cpp -Ltest/cpp -lmylib
g++> #include "mylib.h"
g++> defined_in_cpp();
defined_in_cpp saying hello.
g++>
The cstdio, iostream and string headers are automatically included, and the std namespace is automatically in scope.
Downloading and installing
Clone the repository over either https or ssh.
HTTPS
git clone https://git.cafkafk.com/cafkafk/igcc.git
SSH
git clone git@ssh.cafkafk.com:cafkafk/igcc.git
Installing
Navigate to the repository you cloned.
cd igcc
From here, use the makefile to install the program.
make
make install
This will install the program into ~/.local/bin/
, you can change that with the
PREFIX env variable to the make install
command.
After installing, if the installation folder is in your path, you can run the program like you would run any other program on your system.
igcc
Then type the C++ code you want to execute. It will be compiled with GCC and the results (if any) will be displayed.
Type .h
to see some (minimal) help.
Developing
IGCC is a small python wrapper around GCC.
Check out the code here:
git clone git@ssh.cafkafk.com:cafkafk/igcc
Or browse the source here:
Links
IGCC home page: https://git.cafkafk.com/cafkafk/igcc
Old IGCC home page: http://www.artificialworlds.net/wiki/IGCC/IGCC
Andy Balaam's home page (original author of igcc): http://www.artificialworlds.net
Andy Balaam's blog (original author of igcc): http://www.artificialworlds.net/blog
Contact
The current maintainer for this fork is cafkafk, contact through https://cafakfk.com
Copyright
This software is redistributed under the AGPLv3, forked from the original source.
The original IGCC is Copyright (C) 2009 Andy Balaam
IGCC is Free Software released under the terms of the GNU Affero General Public License version 3 or later.
IGCC comes with NO WARRANTY.
See the file LICENSE for more information.