gcc 4.4.3
Версия реализации gcc языка программирования CВерсия gcc.
Примеры:
Квадратное уравнение - C (427):
Этот пример использует тип данных complex
, впервые появившийся в C99, и функции для работы с ним.
#include <stdio.h>
#include <complex.h>
#include <math.h>
void print(int ind, double complex x) {
printf("x%d = ", ind);
if (fabs(cimag(x)) < 1e-6)
printf("%f\n", creal(x));
else printf("(%f, %f)\n", creal(x), cimag(x));
}
int main() {
double A, B, C;
double D;
printf("A = ");
scanf("%lf", &A);
if (fabs(A)<1E-3) {
printf("Not a quadratic equation\n");
return 1;
}
printf("B = ");
scanf("%lf", &B);
printf("C = ");
scanf("%lf", &C);
A *= 2;
D = B*B-A*C*2.0;
if (fabs(D)<1E-3)
printf("x = %f", creal(-B/A));
else {
print(1, (-B+csqrt(D))/A);
print(2, (-B-csqrt(D))/A);
}
return 0;
}
Hello, World! - C (471):
X11,чистый Xlib. Компилируется : gcc test.c -o test -lX11
Программа создает с помощью функции XOpenDisplay соединение с X-Server. Функция DefaultScreen выбирает текущий экран, XCreateSimpleWindow создает окно, а XSelectInput определяет события, на которые окно должно реагировать. XMapWindow выводит окно на экран, а XNextEvent выбирает из очереди событие, которое выше было определено. При событии Expose в окне выводится “Hello World!”. При нажатии клавиши на клавиатуре программа завершает работу.
#include <X11/Xlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
extern int errno;
int main(void) {
Display *display;
Window window;
XEvent e;
char *msg = "Hello, World!";
int s;
/* Соединиться с X сервером */
if ((display = XOpenDisplay(getenv("DISPLAY"))) == NULL)
{
printf("Can't connect X server: %s\n", strerror(errno));
exit(1);
}
s = DefaultScreen(display);
/* Создать окно */
window = XCreateSimpleWindow(display, RootWindow(display, s), 10, 10, 200, 100, 1, BlackPixel(display, s), WhitePixel(display, s));
/* На какие события будем реагировать */
XSelectInput(display, window ,ExposureMask | KeyPressMask);
XMapWindow(display, window); /* Вывести окно на экран */
/* Бесконечный цикл обработки событий */
while (1)
{
XNextEvent(display, &e);
/* Перерисовать окно */
if (e.type == Expose)
{
XDrawString(display, window, DefaultGC(display, s), 50, 50, msg, strlen(msg)); /*Вывод текста*/
}
if (e.type == KeyPress)
break;
}
XCloseDisplay(display); /* Закрыть соединение с X сервером */
return 0;
}
Комментарии
]]>blog comments powered by Disqus
]]>