디스크에 쓰지 않고 emacs 버퍼의 내용을 gcc로 보내는 방법은 무엇입니까?

디스크에 쓰지 않고 emacs 버퍼의 내용을 gcc로 보내는 방법은 무엇입니까?

디스크에 저장하는 데 특별히 관심이 없는 일회성 코드 조각을 실행하는 것이 일반적이므로 시스템의 어떤 파일에도 첨부되지 않은 emacs의 버퍼에서 작업하는 경우가 많습니다.

언제설명했다(이 용어를 사용하기가 조금 꺼려집니다.) Python, Scheme 또는 Lua와 같은 언어, 모든 주요 모드(공통 모드)는 편집기 내에서 REPL/인터프리터를 실행하고 버퍼의 내용을 직접 실행하는 방법을 제공합니다. (보통 send-buffer이라는 함수가 있습니다 .)

그런데 C언어를 사용해보면 비슷한 기능을 찾을 수 없습니다. gcc파일 이름을 인수로 제공하기 위해 파일을 디스크에 저장해야 했습니다 .

파일을 디스크에 쓰지 않고 emacs 버퍼의 내용을 gcc로 보내는 방법이 있습니까?

답변1

C-x h( mark-whole-buffer), 'M-|( )를 사용한 shell-command-on-region다음 위의 @Kotte 제안을 사용하여 실행하세요.gcc -x c -o tmp_prog - && tmp_prog

또는 이를 수행하는 elisp 함수가 있습니다:

(defun compile-and-run-buffer()
  "Compiles the code in the buffer using gcc, run the exe and remove it."
  (interactive)
  (shell-command-on-region
   (point-min)
   (point-max)
   "gcc -x c -o emacs_tmp - && ./emacs_tmp && rm emacs_tmp"))

관련 정보