2017-12-31 61 views
0

매개 변수로 char *에 약간의 문제가 있습니다. 나는 전에이 문제를 겪어 보지 못했지만 왜 지금 일어나고 있는지 찾을 수없는 것 같습니다. 무엇의 약간의 예는 "완벽하게 잘해야한다"C++ Strange char * 매개 변수 문제 (호환되지 않는 유형)

void foo(char* param) 
{ 
    return; 
} 

foo("hello world"); 

우리가 오류 얻을 수 있기 때문 작동하지 않습니다 : 나는 주위를 살펴했지만, 아무것도 찾을 수 없습니다

cannot convert argument 1 from 'const char [12]' to 'char *'

합니다. 나는 또한 캐릭터 세트를 변경하려고했지만 아무데도 가지 않았다. 나는 새로운 프로젝트를 만들었지 만 같은 일이 일어났습니다. 어딘가 어딘가 설정을 바꿨나요?

나는 기본적인 예를 들어 근무 CONST를 추가하려고 시도하지만 난 너무 본 적이 없습니다

void Setup() 
{ 
    Find<MyClass>("function.dll", "function"); 
} 

template <class i> 
i* Find(const char* module, const char* name) 
{ 
    return nullptr; 
} 

이 나에게 뭔가를주는 내 템플릿 :

Conversion from string literal loses const qualifier (see /Zc:strictStrings)

+0

입니까? 그것은 최근에야 영향을 받았으며 오랫동안 VS2017/2015를 사용 해왔다. 그리고 당신의 예제는 방금 내 마음을 날려 버렸습니다. 나는 모든 것을 다시 설치할 때까지 항상 VS2017에서 그 일을 할 수있었습니다. –

+0

어쩌면 너무 가볍습니다. –

+0

const 추가가 작동하지 않는 또 다른 예제를 제공했습니다. –

답변

2

문자열 리터럴은 char const * 아니요, char *이 아닙니다. 컴파일러는 여기에 맞습니다. 당신은 수정 가능한 문자 배열을 가지고 싶다면 당신은 할 수 있습니다 : 그 이유는

void foo(char *) { } 
char buf[] = {"hello, world"}; 
foo(bar);