[mingw32] Byte order. Чем заменить endian.h?
Согласно man endian написано что эти функции добавлены начиная с glibc 2.9...
Здрасьте :) Вопрос, есть такая функция как fgetwc(...) которая вроде должна считывать Unicode-символ из файла, но на самом деле нифига не считывает, точнее считывает как обычный однобайтовый символ, а потом его преобразует в четырёхбайтовый. При этом нашёл у себя 2 man страницы по теме:
man 3 fgetwc
It reads a wide character from stream and returns it.
man 3p fgetwc
The fgetwc() function shall obtain the next character (if present) from the input stream pointed to by stream, convert that to the corresponding wide-character code, and advance the associated file position indicator for the stream (if defined).
И как бы получается пишут они немного о разном...
И вот например, существует файл /home/maxim/unicode16.txt закодированный в UTF-16, и программа:
// main.c
#include <stdio.h>
#include <wchar.h>
#include <string.h>
int main(void)
{
printf("Size of wchar_t = %d\n", sizeof(wchar_t)); // 4
printf("Size of wint_t = %d\n\n", sizeof(wint_t)); // 4
FILE* f_in = fopen("/home/maxim/unicode16.txt", "r");
if (!f_in) {
fprintf(stderr, "Невозможно открыть файл для чтения!\n");
return -1;
}
wint_t wc = 0;
clearerr(f_in);
printf("Status: %s\n", strerror(ferror(f_in)));
while (wc = fgetwc(f_in)) {
if (ferror(f_in)) {
fprintf(stderr, "Status: %s\n", strerror(ferror(f_in)));
break;
}
printf("%08X : `%lc'\n", wc, wc);
}
fclose(f_in);
return 0;
}Результаты её работы:
$gcc -o main main.c && ./main
Size of wchar_t = 4
Size of wint_t = 4
Status: Success
00000001 : `'
00000004 : `'
0000000A : `
'А вот содержимое unicode16.txt (Там записана буква Ё и перевод строки):
$hexdump -C /home/maxim/unicode16.txt
00000000 01 04 0a 00 |....|
00000004Я ожидал что программа выдаст что-то вроде 00000104 00000A00, а выдаёт она не то. Где подвох, и как мне таки прочитать один символ _юникода_ из файла?
Существуют два файла - a.c и b.c, а также главный - main.c, как сделать чтобы по умолчанию файл a.c не мог видеть функции объявленные в b.c (и при этом не объявленные в заголовочном файле). Самый простой вариант мне известен - добавлять static перед определением функции. Как сделать чтобы статическими были все функции по умолчанию?
Например:
// a.h
#ifndef A_H
#define A_H
void start_a();
#endif
// a.c
#include "a.h"
void start_a()
{
private_func_from_b(); // вот тут компилятор должен обругаться, а на деле ему пофиг
}
// b.h
#ifndef B_H
#define B_H
void start_b();
#endif
// b.c
#include "b.h"
void private_func_from_b()
{
// <...>
}
void start_b()
{
// <...>
}
// main.c:
#include "a.h"
#include "b.h"
int main(void)
{
// <...>
start_a();
start_b();
}
Честно говоря, сколько на линуксах сижу, такое встретил впервые. Установил себе на компьютер Arch Linux, базовую настройку производил в консоли. Всё было замечательно до установки Иксов. При выполнении команды startx наблюдаю чёрный экран. Иногда вместо него появляются окошки иксовые, но толку от этого никакого, потому что всё виснет насмерть, переключение на другую консоль не помогает, Ctrl+Alt+Del тоже, на Magic SysRq Keys также нет реакции.
Драйвера для видеокарты из пакета xf86-video-nv.
Как вариант попробовал переустановить все пакеты в системе (в Pacman Howto написано как это делать). Пакеты тянулись с оф. сайта. Не помогло.
Вопрос знатокам: Кто виноват и что делать?
О системе: ArchLinux версия для X86_64. Nvidia 6600
Логи: 1) Xorg.0.log 2) pacman.log 3) lsmod 4) messages.log 5) dmesg.log
И вот ещё rc.conf на всякий случай.
Здравствуйте, возникло желание перекомпилировать ядро которое будет заточено под сабжевый бук. Такое желание побудила оч медленная работа 3D. Конкретно установлена базовая система Debian Lenny, дополнительные пакеты для kde4.2.4 брал из experimental. В параметрах системы включил 3D ускорение. Эффектов установил по минимому. Напрягает медленная прорисовка, например при прокрутке страницы в браузере, или переходу между рабочими столами. При этом видно что процессор не напрягается (максимум 30% при обычной работе), памяти занято 350мб из доступных 1.5Гб, своп 0%.
Поэтому, решил перекомпилировать ядро. Конфиг и патчи брал здесь, исходники ядра из репов дебиана, всё скомпилил, загрузился. 3D ускорение перестало работать совсем.
Куда копать?
PS: Acer Aspire One ZG5 CPU: Intel Atom N270 1.6Ghz Video: Intel Mobile 945GM RAM: 1.5Gb
| ← назад | следующие → |