2011-01-14 34 views
17

thể trùng lặp:
How to write program during compiling?Odd C câu hỏi phỏng vấn

Hi guys. Tôi tìm thấy vấn đề này trên một trang web đầy đủ các câu hỏi phỏng vấn, và đã được stumped bởi nó. Có một số chỉ thị tiền xử lý cho phép một người đọc từ đầu vào tiêu chuẩn trong quá trình biên dịch không?

Viết chương trình C nhỏ, trong khi biên dịch sẽ lấy chương trình khác từ đầu vào đầu vào và khi chạy sẽ cho kết quả cho chương trình thứ hai. (LƯU Ý: Điều quan trọng là, hãy suy nghĩ UNIX). Giả sử, chương trình là 1.c Sau đó, khi biên dịch

$ cc -o 1 1.c 
int main() { printf("Hello World\n"); } ^D 
$ ./1 
Hello World 

EDIT Hóa ra câu hỏi này là một bản sao chính xác. How to write program during compiling?

+0

tôi sửa vỏ mẫu của bạn lệnh để đáp ứng tốt hơn những gì tôi nghĩ bạn có nghĩa là. Nếu tôi sai - oops! –

+0

Cảm ơn John; thực sự bản gốc là một lỗi đánh máy. –

Trả lời

55

#include "/dev/stdin" là mẹo.

Câu hỏi phỏng vấn ngớ ngẩn lúc tốt nhất.

+27

Wooooow. Đó là ... cái ác. – detly

+1

Câu trả lời đúng, bình luận không cần thiết mặc dù –

+16

"Ngớ ngẩn" không bắt đầu mô tả nó - đó là mức độ nghiêm trọng của ngu ngốc mà người hỏi nên được đưa ra và triệu tập bắn. –

0

Bạn cần yêu cầu trình biên dịch nhập mã nguồn của nó từ đầu vào tiêu chuẩn và biên dịch. Có rất có thể là một đối số dòng lệnh cho điều đó.

Bằng cách này, bạn có thể dẫn đầu ra của chương trình khác vào trình biên dịch của bạn.

EDIT Như thường lệ, Stack Overflow already had an answer for this.

echo "int main() { return 0; }" | gcc -x c - 

EDIT Bỏ lỡ khi biên dịch tuyên bố. Thủ thuật piping vẫn hoạt động theo cách khác, vì vậy tôi sẽ để nó ở đó.

+0

Cảm ơn, nhưng đây không phải là những gì tôi đã yêu cầu. –

3

Với tinh thần một tay, tôi đã cố gắng tạo một phiên bản nền tảng/độc lập với môi trường hơn. Tuy nhiên, tôi bị kẹt ở đây ... vì vậy đây là câu hỏi của tôi, tôi có thể thay thế '???' với?

#ifdef _WIN32 
#include ??? 
#else 
#include "/dev/stdin" 
#endif 

EDIT: Nhờ ohmantics bây giờ tôi có thể nhận được công việc với:

#ifdef _WIN32 
#include "CON" 
#else 
#include "/dev/stdin" 
#endif 
+3

'#include" CON "' là thủ thuật ở đó. – ohmantics

+0

@ohmantics Vì vậy, nó là :) cảm ơn! – William

+3

Tôi nhớ những ngày Internet Explorer sẽ BSOD máy tính của bạn nếu nó gặp phải một cái gì đó như ''. – zneak

Các vấn đề liên quan