Web Analytics

igcc

⭐ 209 stars Persian by alexandru-dinu

🌐 زبان

GCC تعاملی

tests contrib Code style: black

[!توجه]
مخزن اصلی از اندی بالام در اینجا قرار دارد: https://codeberg.org/andybalaam/igcc.
در این شاخه (fork)، من مقداری بازآرایی انجام داده‌ام و سعی کرده‌ام استفاده از آن را آسان‌تر کنم.

[!هشدار]
این پروژه یک تلاش غیررسمی برای ایجاد چرخه بازخورد کوتاه‌تر هنگام کار با C/C++ در برخی موارد است و به‌وضوح برای هیچ کار جدی‌ای در نظر گرفته نشده است.

جی‌سی‌سی تعاملی (igcc) یک حلقه خواندن-ارزیابی-چاپ (REPL) برای C/C++ است. این برنامه با دستکاری یک فایل مبنا با دستورات کاربر کار می‌کند، پس از هر تغییر فایل را کامپایل می‌کند، سپس فایل اجرایی حاصل را اجرا کرده و خروجی stdout و stderr را جمع‌آوری می‌کند. ورودی چندخطی (بلوک) پشتیبانی می‌شود، بنابراین می‌توانید چندین خط را همزمان اضافه کنید و فقط یک بار کامپایلر را فراخوانی کنید (نمونه‌ها در ادامه).

شما می‌توانید هدرهای مختلفی را وارد کنید. برای راحتی، یک هدر پیش‌فرض اضافه شده است: boilerplate.h. همچنین، using namespace std; به طور پیش‌فرض فعال نیست، اما می‌توانید به طور صریح آن را اضافه کنید (نمونه در ادامه).

جنبه‌های مختلفی از igcc قابل پیکربندی هستند، مراجعه کنید به config.yaml.

شروع به کار

ساده‌ترین راه برای شروع استفاده، استفاده از pipx است:
pipx install git+https://github.com/alexandru-dinu/igcc.git
همچنین می‌توانید از uv نیز استفاده کنید:
uv tool run git+https://github.com/alexandru-dinu/igcc
و برای توسعه‌دهنده:
git clone https://github.com/alexandru-dinu/igcc.git
cd igcc
uv sync

آرگومان‌های موجود:

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.

کد با GCC (g++) کامپایل خواهد شد و نتایج (در صورت وجود) نمایش داده می‌شوند. برای دریافت راهنما .h را تایپ کنید:

$ 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

مثال‌ها

$ 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; }

ورودی چندخطی (Multi-line input) پشتیبانی می‌شود (گزینه multiline_marker را در پیکربندی بررسی کنید). مزیت این کار جلوگیری از فراخوانی‌های متعدد کامپایلر است.

$ 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
می‌توانید سربرگ‌ها را اضافه کنید:

$ 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
کتابخانه‌ها می‌توانند لینک شوند:

$ 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!

شما همچنین می‌توانید دستورات را واگردانی کنید:

$ 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; }

... یا فرمان‌هایی که قبلاً لغو شده‌اند را دوباره انجام دهید:

$ 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; }

کارهای آینده

مشاهده کنید https://github.com/alexandru-dinu/igcc/issues

پروژه‌های مشابه

اعتبارنامه‌ها

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