LINUX.ORG.RU

GTK: объясните разницу

 , , ,


0

3

Есть два текста кода:

* Подключаем библиотеку GTK+ */
# include <gtk/gtk.h>
int main( int argc, char *argv[])
{
	/* Объявляем виджеты */
	GtkWidget *label;	// Метка
	GtkWidget *window;	// Главное окно
	/* Инициализируем GTK+ */
	gtk_init(&argc, &argv);
	/* Создаем главное окно */
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	/* Устанавливаем заголовок окна "Здравствуй, мир!" */
	gtk_window_set_title(GTK_WINDOW(window), "Здравствуй, мир!");
	/* Создаем метку с текстом "Здравствуй, мир!" */
	label = gtk_label_new("Здравствуй, мир!");
	/* Вставляем метку в главное окно */
	gtk_container_add(GTK_CONTAINER(window), label);
	/* Показываем окно вместе с виджетами */
	gtk_widget_show_all(window);
	/* Соединяем сигнал завершения с выходом из программы */
	g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
	/* Приложение переходит в вечный цикл ожидания действий пользователя */
	gtk_main();
	return 0;
}
#include <gtkmm.h>
 
int main(int argc, char* argv[])
{
    Gtk::Main    toolkit(argc, argv);
    Gtk::Window  window;
 
    toolkit.run(window);
 
    return 0;
}
Первый код как я понимаю написан на С, второй на С++. Я пробовал компилировать первый код и g++ и gcc - результат одинаковый - все работает. Почему так? Я думал что для С и С++ нужны разные компиляторы? Или я чего-то не понимаю?

★★★★★

На самом деле компилирует g++.

xoomer
()

Компилятор C++ сохраняет достаточно хорошую совместимость с кодом на C (там есть несколько вещей, которые в C и в C++ должны работать по разному, но их немного и в хорошем коде они редко встречаются).

dn2010 ★★★★★
()

gcc решает на основе расширения файла как конпелять, g++ конпиляет кресты. gcc не линкует libstdc++ по умолчанию вроде, а g++ линкует. Спецом для сишечки наверное тоже есть бинарь или линк, точно не знаю, но это было бы логично.

pon4ik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.