2014-01-11 3 views
-2

최종 사용자가 프로그램에 입력 한 내용을 기반으로 실행 가능한 실행 파일을 만드는 응용 프로그램을 만들고 있습니다. 예를 들어다른 프로그램에서 프로그램을 만드시겠습니까?

는 :

if (make_annoying_sounds == true) 
{ 
    //Generates an executable that makes annoying beeping sounds 
} 
else 
{ 
    //Generates an executable that doesn't make annoying beeping sounds 
} 

는 기본적으로 나는 내 프로그램/생성 다른 프로그램을 만들려고합니다. 나는 이것을 한 많은 프로그램을 보거나 사용했다. 나는 인터넷 전체를 수색했으며 아무 것도 찾을 수 없다. 모든 도움을 주시면 감사하겠습니다. (내 프로그램 내에서 프로그램 만들기).

답변

0

당신은 다음을 수행해야합니다 사용자 입력을 기반으로

  1. 는 사용자 정의 프로그램에 대한 코드를 생성합니다.
  2. 해당 코드를 실행 파일로 컴파일하십시오.
+0

고맙습니다. 그게 바로 제가하려는 일입니다. 하지만, 내 응용 프로그램 내에서 해당 프로그램 (생성 된 프로그램)을 어떻게 컴파일 할 수 있습니까? – Sedulous

+0

생성 된 프로그램을 입력으로 전달하는 컴파일러를 실행하는 새 프로세스 만들기 –

1

원본 파일을 만든 후에 기본 system 호출을 사용하여 컴파일러를 호출 해 봅니다.

당신은 stdio.h

보안 주에있는 단지 유틸리티를 사용하여 소스 파일을 만들 수 있습니다system 기능이 위험한 것으로 알려져있다. 의심 스럽다면 exec과 같은 함수를 호출하여 컴파일러를 호출하십시오. exec은 현재 실행중인 프로세스를 지우지 만 컴파일을 완료 한 후에 계속 수행하려면 fork을 사용하고 exec을 호출해야합니다.

+0

감사합니다. 정상적으로 작동합니다. 이 작업을 수행하는 다른 방법이 있습니까? 그럼에도 불구하고, 이것은 어쨌든 작동합니다. 편집 : 신경 쓰지 마세요, 고마워요! – Sedulous

+0

@Sedulous 많은 작업 인 컴파일 루틴을 직접 구현하거나 API가 예고없이 변경 될 수 있으므로 매우 신뢰할 수없는 컴파일러의 개인 API를 호출하려는 경우가 아니면 별도의 프로세스를 만드는 것이 좋습니다 . – randomusername

1

그래서 컴파일러를 만들고 싶습니까? 이 질문에는 시작하는 데 도움이되는 전체 리소스 목록이 포함되어 있습니다.

Learning to write a compiler

0

한다면 이론적, 사용자의 입력이, C 코드가 if 문 내부 C 코드를 생성 할 내용에 따라 수 있습니다. 그러나 이것은 매우 어려울 것입니다.

내가 생각하는 가장 좋은 방법은 생성 된 프로그램이 실행할 수있는 함수 (예 : 매개 변수로 주어진 사운드 재생) 만 구현하는 독립 C 엔진을 만드는 것입니다. 코딩하려는 프로그램 (엔진이 아니고, if 문장을 가진 프로그램은 "마스터 프로그램"이라고 부르겠습니다)은 엔진의 어떤 기능을 언제 호출 할 것인지 선택하는 알고리즘을 구현하는 코드를 생성해야합니다. 이 생성 된 코드는 C보다 스크립트 코드를 생성하기가 쉽기 때문에 lua와 같은 스크립팅 언어로 작성되어야합니다. 따라서 엔진은 루아 스크립트와 통신 할 수 있도록 설계되어야합니다. 사용자가 마스터 프로그램의 최종 "프로그램 생성"버튼을 클릭하면 마스터 프로그램은 gcc를 호출하여 엔진과 Lua 스크립트를 컴파일하여 사용자가 생성하려고 시도한 프로그램을 생성합니다. 이것은 오래지만, 이것이 올바른 방법이라고 생각합니다.

관련 문제