Как происходит преобразование к source character set при включении файлов?
У меня есть A.cpp файл в кодировке X, в него включается хедер B.h с кодировкой Y, в этот хедер B.h включается хедер C.h с кодировкой Z. Что происходит с кодировками файлов при таком включении для компилятора gcc с опцией -finput-charset=X?
Правильно ли я понимаю, что сначала, т.к. #include выполняется рекурсивно, байты C.h приводятся из Z в Y, а потом байты B.h с включенным C.h из Y преобразуются в X? Либо же Z сразу приводится к X? Или преобразований кодировок нет вовсе? Что тогда означает mapping/convert к source character set?
По какому алгоритму происходит этот mapping и могут ли быть ошибки при нём?
Ответы (1 шт):
Опция -finput-charset указывает кодировку входящих файлов. Все эти файлы уже должны быть сохранены в этой кодировке. Никакого преобразования кодировки не происходит. Если у файлов разная кодировка, то получается винегрет.