"문자열"을 받아들이고 로그하는 작은 함수를 작성했습니다.C++ 문자열/char * 연결
void
IPC::bomb (char * msg) { /* etc */ }
호출이 인스턴스가 컴파일되지 않습니다 :
bomb(__FUNCTION__": socket() call failed: " + strerror(errno));
진단 :
./c/IPC.cpp:26: error: expected ')' before string constant
./c/IPC.cpp:26: error: invalid conversion from 'const char*' to 'char*'
내가 인용 리터럴, 표준 효과적으로 작동하는 방법에 대한 매우 혼란 스러워요 :: 문자열, char *, 그리고 어떻게 const-ness가 그 안에 들어 있는지를 보여줍니다. 위의 문제를 어떻게 해결합니까? 그리고 일반적으로 문자열 연결에 대한 몇 가지 규칙이 있습니까? char *와 strings를 혼합 할 때?
UPDATE 1 : C 전처리이 확장을 보여줍니다 : 직장에서 또 다른 문제가있을 수 있습니다
bomb(std::string(__FUNCTION__ ": socket() call failed: ") + strerror((*__errno_location())));
나는'__FUNCTION__'과'': .. ".."사이에 공백을 넣은 후 시도했지만 ./c/IPC.cpp:26 : error : '('토큰 . 'std :: string (__FUNCTION__ ") : socket() 호출 실패 :") + strerror ((문자열에 대한 호출이 실패했습니다 : /c/IPC.cpp:26 : error : expected') '문자열 상수 앞에' – Chap
음 ... 시도해 보도록하겠습니다 ... –
좋아, 편집하고 완성 된 작은 프로그램을 추가했습니다. –