libconfig를 사용하여 프로그램을 설치하려고합니다..cfg 파일을 사용한 포인터 경고
int main()
{
const char **channel;
config_t config;
config_init(&config);
config_read_file(&config, "example.cfg");
if(config_lookup_string(&config,"value.channel",&channel) == CONFIG_FALSE)
{
printf("Failed to read fields\n");
return 1;
}
printf("argumente = %s\n", (char *)channel);
return 0;
}
과 example.cfg 파일
값 = {채널 = "안녕하세요"; : 예제 파일 (example1.c)이있다 }
내가 그것을 컴파일하는 경우
GCC의 예제 파일 (example1.c) -lconfig
는 말한다 :
example1.c:39:3: Warning: delivery of arguments 3 from »config_lookup_string« of a incompatible pointer
/usr/include/libconfig.h:244:26: Detailed: »const char **« expected, but argument has typ »const char ***«
재미있는 것은이 작품은 ... 출력은 다음과 같습니다. argumente = hello
이 경고 메시지는 어떻게 삭제합니까? 내가 const char *channel
에 decleration 출력 printf("argumente = %s\n", channel);
을 변경하는 경우
, 나는 그냥 channel
당신의 선언에 하나 *
을 제거 할 필요가 시작에 세그먼트 폴트와 같은 컴파일에서 경고 ... Detailed: »const char **« expected, but argument has typ »const char *«
이 const char * channel로 변경되었습니다. 그리고 끝에 printf ("argumente = % s \ n", 채널); 하지만 시작할 때 Segfault를 얻습니다. – Fendrix
@Fendrix, 다른 것을 변경해야합니다. 원래 예제를 통해 오류 메시지를받을 수있는 방법은 없습니다. 'char *'를 한 번,'char **'를 또 한번 기대할 수 있을까요? –