2013-01-20 8 views
0

간단한 clang 플러그인을 작성하려고합니다. 그래서 llvm-clang에서 제공되는 "PrintFunctionNames" 플러그인을 실행했습니다. 그러나 내가 명령을 실행하려고 할 때 :iostream에 치명적인 오류가 발생했습니다

"그 소리 -cc1 -load ../../Debug+Asserts/lib/libPrintFunctionNames.so -plugin 인쇄 FNS 일부 입력-file.c는"

이 나에게 1 치명적인 오류 제공 :

fatal error: 'iostream.h' file not found 
#include<iostream.h> 
     ^
1 error generated. 

가 나는 또한 'iostream'의 디렉토리를 포함하지만 여전히 날 같은 오류를 제공하기위한 경로를 제공 -I 옵션을 사용하여 시도합니다.

'그 소리 ++ -I // USR/포함/C++/4.6 -cc1 -load ../../../../Release+Asserts/lib :

내가 좋아하는 그것을 시도 /libPrintFunctionNames.so -plugin print-fns ak.cpp '

어떻게이 작업을 수행 할 수 있습니까?

답변

1

끝에 .h를 추가하지 마십시오.

#include <iostream> 

해결해야합니다.

0

ISO에서 C++ 언어를 표준화 한 후 iostream.h이라는 헤더 파일의 이름이 iostream으로 바뀌 었습니다. 대신 #include <iostream>을 사용하도록 프로그램을 변경하면 컴파일해야합니다.

또한 각 include 다음에 using namespace std; 문을 추가하거나 iostream 함수/개체에 대한 각 참조 앞에 std::이라는 문구를 추가해야합니다. 당신은 당신이 네임 스페이스에 더 익숙해지면이

#include <iostream> 
using namespace std; 

를 사용하여 시작할 수 있습니다

, 당신은 using 문 &을 대신 제거하거나 std::cout, std::cin 등을 사용하거나

using std::cout; 
using std::cin; 

등을 할 수 있습니다

1

iostream은 C가 아니기 때문에 C가 아닙니다. 당신은 당신이 C++를 사용하려는 컴파일러 및 다른 사람을 분명히하기 위해 .C하지 .CPP로 끝나는 소스 파일 이름을 지정해야 ++ C로 프로그래밍되어 추가로부터

#include <iostream> 

로 포함해야한다. 또한 첫 번째 컴파일러 호출에서 clang++을 호출해야 할 수도 있습니다 (그러나 플러그인 컨텍스트에서 이에 대해 확신하지 못합니다)

관련 문제