내가이 C의 ++ 파일이 (의이 main.cpp
를 부르 자) :C++ 스트림에서 특정 #include 지시문을 제외하는 방법은 무엇입니까?
#include <string>
#include "main.y.c"
void f(const std::string& s) {
yy_switch_to_buffer(yy_scan_string(s.c_str()));
yyparse();
}
파일은 bison
폴더의 유틸리티를 이용하여 사전에 생성되어야한다 main.y.c
에 따라 달라집니다. 즉, 전에 bison main.y
을 실행하는 것을 잊어 버리면 main.c
파일을 컴파일 할 수 없습니다. 그리고 그것은 완벽하게 OK입니다, 이것이 내가 원하는 방식입니다. 지금은이 명령을 사용하여, Makefile
에서 .d
파일을 구축하기 위해 노력하고있어 :
$ c++ -MM main.c > main.d
main.cpp:2:10: error: main.y.c: No such file or directory
내가 여기에 실패, main.y.c
아직 준비가되지 않은 때문이다. 어떻게 든 #include
지시어를 main.c
파일에 인용해야한다고 생각하여 c++ -MM
프로세스에서 보이지 않게해야합니다.
나는 'bison'을 많이 모르기 때문에 내 질문이 어리석은 일 이겠지만 ... .c 파일을 포함하는 것은 잘못된 것 같습니다. '들소'와 정말로 일하는 방법인가요? 당신은 상응하는'.h' 파일을 가지고 있지 않습니까? – ereOn
네, 결과를 다른 C++ 파일로 래핑해야하는 경우 바이슨이 작동하는 방식입니다. 본질적으로 들소는 C를위한 것이지 C++을위한 것이 아닙니다. 따라서 C++ 프로젝트에서 작동하도록 만드는 것이 트릭입니다. 최소한 나는 이렇게 이해한다 .. – yegor256
실제로'.h' 파일을 포함 할 수 있지만이 파일 또한'bison'에 의해 자동 생성된다. 그래서'.c'를'.h'로 바꾸면 해결되지 않을 것이다. 문제 – yegor256