안녕하세요 여러분, 함수 (또는 포인터)에서 파일 이름의 값을 반환하지만 어떻게해야하는지 확실히 알고 싶습니다. 내 파일 이름은/home/username/file이라는 파일 이름에 경로를 저장합니다. 그래서 여기이GTK의 G_CALLBACK에서 파일 이름을 반환합니다.
static void
show_dialog (GtkWidget *button,
gint response_id,
gpointer user_data)
/* Init filechoosedialog, builder etc */
{
gchar *filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (filechoosedialog));
}
처럼 내 주요
gchar *filename = NULL;
button = GTK_WIDGET(gtk_builder_get_object(builder, "button1"));
g_signal_connect (button, "clicked", G_CALLBACK (show_dialog), &filename);
그리고 보여 대화 모습은 내가 show_dialog을 gchar하고 정적 무효 show_dialog를 변경해야합니까 끝에 내가 반환 파일 이름을 어떻게해야합니까; 그리고 다른 무엇 임 오류를 그래서
warning: return makes integer from pointer without a cast
를 컴파일지고 있기 때문에 나는 내 주에 다음과 같은 코드를 추가하고이 오해 같은 소리 파일 이름
if filename != NULL
g_print ("Selected filename: %s\n", filename);
그러나 단추 1 프로그램 쇼 filechooserdialog을 클릭에 내가 diferently 그것을 어차피 다음 cshoose 파일 :
문제가 유저 데이터 포인터를 사용하는 경우, 여기에 유저 데이터로 파일 이름에 단지 포인터를 사용하는 예입니다 확인을 클릭 오리지널 show_dialog에서 예를 들어 g_prinf를 가지고 있지만 지금은 주 또는 다른 함수에서 avalible을 갖고 싶습니다. 그리고 나는 그것이 오해라는 것을 이해하지 못합니다. 다른 방법은 없습니다. – Vido
당신이 원하는 것을 설명했다면 우리가 도울 수 있을지도 몰라. "사용자 데이터 포인터로 레이블"예제는 실제로 문자열을 다른 곳에서 사용할 수 있다는 것이 었습니다 ... "main()으로 돌아가는"것은 GTK +와 같은 이벤트 기반 프로그래밍에서 거의 의미가 없습니다.()는 show_dialog()를 직접 호출하지 않으므로 반환 값을 직접 얻을 수 없다는 의미가 있습니다. – jku
좋아요. main()으로 돌아갔습니다. 왜냐하면 filename()을 네 번째 인수로 다른 G_CALLBACK() 함수에 전달해야 할 필요가 있다면, 그렇게 간단하게 계획 했으므로 몇 가지 메모리 관리를 설정하는 것입니다,하지만 먼저 어떻게해야하는지, 그리고 내가 무엇을 필요로하는지 배우는 것이 필요합니다. 어떤 생각이 있습니까? – Vido