2015-10-29 17 views
5

Lấy cảm hứng từ PCG challange: https://codegolf.stackexchange.com/q/61836/31033 Tôi tự hỏi, nếu bạn cố gắng để lại càng ít dấu vết càng tốt khi biên dịch loại công cụ như vậy (bất kể trình duyệt hoặc cái gì khác), có cách nào đó (nhằm gcc/clang vì đây có thể là các trình biên dịch dòng lệnh được cài đặt sẵn trong môi trường làm việc) để bàn giao mã nguồn cho trình biên dịch như là đối số dòng lệnh hoặc cơ chế bình đẳng, mà không cần mã nguồn beeing được lưu dưới dạng * .c, như người dùng thường làm?Biên dịch mã C mà không cần lưu nó trong một tập tin

(ofcourse trình biên dịch sẽ tạo ra các file tạm khi biên dịch, nhưng những người có thể sẽ không được quét.)

+0

Wel Tôi có thể viết một kịch bản viết mã nguồn của bạn, biên dịch nó, sau đó xóa nó. – Arc676

+0

Tại sao bỏ phiếu lại quá gần? Đó là một câu hỏi khá ngắn gọn chỉ với 2 lựa chọn trả lời. 1) Không có khả năng với một trong số họ hoặc 2) Có nó hoạt động với gcc/clang/cả hai, với lệnh có tên là ... – dhein

+0

@ Arc676: Vâng, nhưng điều đó sẽ dẫn đến một tệp có thể được quét hoặc để lại một dấu vết tiết lộ hành vi không mong muốn của tôi. – dhein

Trả lời

6

Ít nhất gcc có thể vì nó có khả năng đọc nguồn từ đầu vào tiêu chuẩn. Bạn cũng có thể sử dụng Unix đây xây dựng chuỗi bash:

gcc -xc - << "int main() { exit(0); }" 

hoặc ở đây xây dựng tập tin sh:

gcc -xc - <<MARK 
int main() { 
    exit(0); 
} 
MARK 

---- EDIT ----

Bạn cũng có thể tưởng tượng sử dụng mật mã để mã hóa nguồn của bạn, mã hóa nội dung khi đang di chuyển và đưa kết quả vào đầu vào chuẩn của gcc, như sau:

uncipher myfile.protected | gcc -xc - 
Các vấn đề liên quan