Перейти к содержанию

Язык Си в примерах/XCC C

Материал из Викиучебника — открытых книг для открытого мира

Язык Си в примерах


  1. Компиляция программ
  2. Простейшая программа «Hello World»
  3. Учимся складывать
  4. Максимум
  5. Таблица умножения
  6. ASCII-коды символов
  7. Верхний регистр
  8. Скобочки
  9. Факториал
  10. Степень числа
  11. Треугольник Паскаля
  12. Корень уравнения
  13. Система счисления
  14. Сортировка
  15. Библиотека complex
  16. Сортировка на основе qsort
  17. RPN-калькулятор
  18. RPN-калькулятор на Bison
  19. Простая грамматика
  20. Задача «Расчёт сопротивления схемы»
  21. Простая реализация конечного автомата
  22. Использование аргументов командной строки
  23. Чтение и печать без использования stdio
  24. Декодирование звукозаписи в формате ADX
  25. Другие примеры
  26. XCC C

XCC C — это диалект языка Си.[1] У него есть свои преимущества и недостатки:

  1. double и float, не поддерживаются; никогда не инициализируйте двумерные массивы
  2. ограничения на структурах
  3. возможность написания программ на Си под iiixmish2
  4. простая реализация многопоточности

Примеры программ

[править]
#include <stdio.h>

int fib(int n) {
    return n < 2 ? n : (fib(n - 1) + fib(n - 2));
}

int main(void) {
    for(int i = 0; i < 21; i++)
        printf("%d\n", fib(i));
}


#include <stdio.h>
#include <stdlib.h>
typedef void __thread1_t;  /* __thr* */

int counter_active;

__thread1_t counter() {
    /* 1) в новом потоке нельзя вызывать
          пользовательские функции
       2) все переменные здесь должны быть статическими */
    
    counter_active = 1;
    
    static int i;
    for(i = 0; counter_active; i++) {
        cr(); putn(i);
        sleep(1);
    }
    
    halt();
}

int main() {
    counter();
    
    getchar();
    
    counter_active = 0;
    sleep(1);
    exit(0);
}

__retptr.c

[править]
#include <stdio.h>
#include <stdlib.h>

int n;

void f(void) {
    extern int __retptr;
    if(n--) f();
    printf("%d\n", __retptr);
}

int main(int argc, char *argv[]) {
    n = strtol(argv[1], NULL, 0);
    f();
}

thm.c (для Xmtwolime, нужен root)

[править]
#include <xmtwolime.h>
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
    if (argc < 3) {
        puts ("usage: thm BGCOLOR TEXTCOLOR");
        exit (EXIT_FAILURE);
    }
    
    *__extern_label("_main_bgColor")    =  atoi (argv[1]);
    *__extern_label("_main_otherColor") =  atoi (argv[2]);
    
    exit (EXIT_SUCCESS);
}

Примечания

[править]