Web Analytics

igcc

⭐ 209 stars Vietnamese by alexandru-dinu

🌐 Ngôn ngữ

Trình Biên Dịch GCC Tương Tác

tests contrib Code style: black

[!CHÚ Ý]
Kho lưu trữ gốc từ Andy Balaam ở đây: https://codeberg.org/andybalaam/igcc.
Trong nhánh này, tôi đã thực hiện một số tái cấu trúc và cố gắng làm cho nó dễ sử dụng hơn.

[!CẢNH BÁO]
Dự án này là một thử nghiệm "hacky" nhằm rút ngắn chu trình phản hồi khi làm việc với C/C++ trong một số trường hợp và rõ ràng không được thiết kế cho bất kỳ mục đích nghiêm túc nào.

Interactive GCC (igcc) là một vòng lặp đọc-đánh giá-in (REPL) cho C/C++. Nó hoạt động bằng cách thao tác trên một tệp nguồn cơ sở với các lệnh của người dùng, biên dịch nguồn sau mỗi lần sửa đổi, sau đó thực thi tệp nhị phân kết quả và thu thập stdout & stderr của nó. Hỗ trợ nhập nhiều dòng (khối), vì vậy bạn có thể thêm nhiều dòng một lúc và chỉ gọi trình biên dịch một lần (xem ví dụ bên dưới).

Bạn có thể bao gồm nhiều tệp header khác nhau. Để thuận tiện, một header mặc định được bao gồm: boilerplate.h. Ngoài ra, using namespace std; không được bao gồm mặc định, nhưng bạn có thể thêm thủ công (xem ví dụ bên dưới).

Nhiều khía cạnh của igcc có thể được cấu hình, xem config.yaml.

Bắt đầu sử dụng

Cách dễ nhất để bắt đầu là sử dụng pipx:
pipx install git+https://github.com/alexandru-dinu/igcc.git
Ngoài ra, bạn cũng có thể sử dụng uv:
uv tool run git+https://github.com/alexandru-dinu/igcc
Và dành cho nhà phát triển:
git clone https://github.com/alexandru-dinu/igcc.git
cd igcc
uv sync
Các đối số khả dụng:

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.

Mã sẽ được biên dịch bằng GCC (g++) và kết quả (nếu có) sẽ được hiển thị. Gõ .h để được trợ giúp:

$ 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

Ví dụ

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

Nhập nhiều dòng được hỗ trợ (kiểm tra multiline_marker trong cấu hình). Lợi ích là tránh việc gọi trình biên dịch nhiều lần.

$ 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

Bạn có thể bao gồm các tiêu đề:

$ 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
Có thể liên kết các thư viện:

$ 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!
Bạn cũng có thể hoàn tác các lệnh:

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

... hoặc làm lại các lệnh đã hoàn tác trước đó:

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

Công việc tương lai

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

Các dự án tương tự

Ghi nhận

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