Web Analytics

igcc

⭐ 209 stars Turkish by alexandru-dinu

🌐 Dil

Etkileşimli GCC

tests contrib Code style: black

[!NOTE]
Andy Balaam tarafından oluşturulan orijinal depo burada: https://codeberg.org/andybalaam/igcc.
Bu çatallamada, biraz yeniden yapılandırma yaptım ve kullanımı daha kolay hale getirmeye çalıştım.

[!UYARI]
Bu proje, bazı durumlarda C/C++ ile çalışırken daha kısa bir geri bildirim döngüsü elde etmek için yapılan geçici bir denemedir ve açıkça ciddi bir şey için tasarlanmamıştır.

Etkileşimli GCC (igcc), C/C++ için bir read-eval-print loop (REPL)'dir. Kullanıcı komutlarıyla bir temel kaynak dosyasını değiştirerek çalışır, her değişiklikten sonra kaynağı derler, ardından ortaya çıkan ikili dosyayı çalıştırır ve stdout & stderr çıktısını toplar. Çok satırlı (blok) girdi desteklenir, böylece bir seferde birden fazla satır ekleyebilir ve derleyiciyi yalnızca bir kez çağırabilirsiniz (aşağıda örnekler var).

Çeşitli başlık dosyalarını dahil edebilirsiniz. Kolaylık olması için varsayılan bir başlık dosyası dahil edilmiştir: boilerplate.h. Ayrıca, using namespace std; varsayılan olarak mevcut değildir, ancak bunu açıkça ekleyebilirsiniz (aşağıda örnek var).

igcc'nin çeşitli yönleri yapılandırılabilir, bkz. config.yaml.

Başlarken

Başlamak için en kolay yol pipx kullanmaktır:
pipx install git+https://github.com/alexandru-dinu/igcc.git
Alternatif olarak, uv de kullanabilirsiniz:
uv tool run git+https://github.com/alexandru-dinu/igcc
Ve geliştirici için:
git clone https://github.com/alexandru-dinu/igcc.git
cd igcc
uv sync

Kullanılabilir argümanlar:

usage: igcc [-h] [-I INCLUDE [INCLUDE ...]] [-L LIBDIR [LIBDIR ...]]
            [-l LIB [LIB ...]]

options: -h, --help show this help message and exit -I INCLUDE [INCLUDE ...] Add INCLUDE to the list of directories to be searched for header files. -L LIBDIR [LIBDIR ...] Add LIBDIR to the list of directories to be searched for library files. -l LIB [LIB ...] Search the library LIB when linking.

Kod GCC (g++) ile derlenecek ve sonuçlar (varsa) görüntülenecektir. Yardım için .h yazın:

$ igcc
[1]> .h
.h  Show this help message
.e  Show the last compile errors/warnings
.l  List the code you have entered
.L  List the whole program as given to the compiler
.r  Redo undone command
.u  Undo previous command
.q  Quit

Örnekler

$ igcc
[1]> int a = 5;
[2]> a += 2;
[3]> using namespace std;
[4]> cout << a << endl;
7

[5]> int b = 17; [6]> a *= b; [7]> cout << a << ", " << b << endl; 119, 17

[8]> .L #include "boilerplate.h" using namespace std;

int main(void) { int a = 5; a += 2; cout << a << endl; int b = 17; a *= b; cout << a << ", " << b << endl;

return 0; }

Çok satırlı giriş desteklenmektedir (ayarı multiline_marker config'den kontrol edin). Bunun faydası, birden fazla derleyici çağrısından kaçınmaktır.

$ igcc
[1]> .m
... for (int i = 0; i < 10; i++) {
...   std::cout << i << " ";
... }
... std::cout << "\n";
... .m
0 1 2 3 4 5 6 7 8 9
Başlıklar ekleyebilirsiniz:

$ igcc
[1]> #include 
[2]> std::vector xs{1,2,3};
[3]> xs.push_back(17);
[4]> .m
... for (auto x : xs) {
...   std::cout << x << " ";
... }
... .m
1 2 3 17

Kitaplıklar bağlanabilir:

$ igcc -lpthread
[  1]> #include 
[  2]> pthread_t thr;
[  3]> const char* msg = "Hello, World!";
[  4]> // assuming print_msg is defined somewhere
[  5]> int ret = pthread_create(&thr, NULL, print_msg, (void*) msg); pthread_join(thr, NULL);
Hello, World!
Ayrıca komutları geri alabilirsiniz:

$ igcc
[1]> int x = 2
 Compile error - type .e to see it

[2]> .e : In function ‘int main()’: :7:5: error: expected ‘,’ or ‘;’ before ‘return’ :5:9: warning: unused variable ‘x’ [-Wunused-variable]

[2]> .u Undone int x = 2 [1]> int x = 2; [2]> .L #include "boilerplate.h"

int main(void) { int x = 2;

return 0; }

... veya daha önce geri alınan komutları yeniden yapın:

$ igcc
[1]> int x = 2;
[2]> std::cout << x;
2
[3]> .u
Undone std::cout << x;
[2]> .L
#include "boilerplate.h"

int main(void) { int x = 2;

return 0; } [2]> .r Redone std::cout << x; 2 [3]> .L #include "boilerplate.h"

int main(void) { int x = 2; std::cout << x;

return 0; }

Gelecek çalışmalar

Bkz. https://github.com/alexandru-dinu/igcc/issues

Benzer projeler

Katkıda Bulunanlar

--- Tranlated By Open Ai Tx | Last indexed: 2025-12-11 ---