gpt4 book ai didi

c - wcscoll 函数被标记为中毒,我该怎么办?

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:57 26 4
gpt4 key购买 nike

在解决此问题之前,在 Mac Os X 10.6.8 上我无法使用标准库中的 wchar_t 函数编译代码。

wcscoll 函数以及其他一些函数:

inttypes.h:#pragma GCC poison wcstoimax wcstoumax stdlib.h:#pragma GCC poison mbstowcs mbtowc wcstombs wctomb wchar.h:#pragma GCC poison fgetws fputwc fputws fwprintf fwscanf mbrtowc mbsnrtowcs >mbsrtowcs putwc putwchar swprintf swscanf vfwprintf vfwscanf vswprintf vswscanf vwprintf >vwscanf wcrtomb wcscat wcschr wcscmp wcscoll wcscpy wcscspn wcsftime wcsftime wcslcat >wcslcpy wcslen wcsncat wcsncmp wcsncpy wcsnrtombs wcspbrk wcsrchr wcsrtombs wcsspn wcsstr >wcstod wcstof wcstok wcstol wcstold wcstoll wcstoul wcstoull wcswidth wcsxfrm wcwidth >wmemchr wmemcmp wmemcpy wmemmove wmemset wprintf wscanf

#include  <stdio.h>
#include <wchar.h>
#include <string.h>
#include <locale.h>
#include <stdlib.h>
extern int errno;
int main(void)
{
wchar_t pwcs1[3]={L"ØL"}, pwcs2[3]={L"Ål"};
size_t n;
(void)setlocale(LC_ALL, "");

/* set it to zero for checking errors on wcscoll */
errno = 0;
/*
** Let pwcs1 and pwcs2 be two wide character strings to
** compare.
*/
/* n = wcscmp(pwcs1, pwcs2); */
n = wcscoll(pwcs1, pwcs2);
/*
** If errno is set then it indicates some
** collation error.
*/
if (n < 0 ) {
printf("%s\n","Øl mindre en Ål" );
} else if (n == 0) {
printf("%s\n","Øl lik Ål" );
} else {
printf("%s\n","Øl større en Ål" );
}

if(errno != 0){
/* error has occurred... handle error ...*/
}
}

我该如何解决这个问题?我有点不愿意乱用标准库。但我想我也许可以编译 GNU C 库,如果 Apple 没有修复它的话?或者在处理宽字符(Utf-8)的库中是否有任何其他合适的替代方法。

我正在移植一些古老的东西,所以我真的需要使用 ncurses,为了使用 ncurses,我需要宽字符! :)

编辑:据我所知,标准的 includepath 应该是/usr/include。我已经浏览了我拥有的 SDK 的包含目录,并且通过头文件的 grep 显示了相同的毒杂注,来自 http://opensource.apple.com/tarballs/Libc/ 的最新 tarball 也是如此。

编辑++

事后看来,这些编译指示存在是有原因的,我正在寻找替代方案,所以现在,我正在尝试构建 glibc,刚刚下载,并且我已经检查了没有任何“GCC 毒药”编译指示的 header .

稍微阅读了一下 glibc 的配置文件,我想这不是一个简单的选择。我想我必须剖析一些与 utf-8 一起工作并在 mac osX 上使用 ncurses 的东西来弄清楚如何。

可能是我忽略了一个简单的解决方案。但是 ncurses 退回到 7 位 ascii,这是我的问题。我的目标是在使用 ncurses 时呈现 utf-8 语言特定字符。我需要能够排序,因为格式是带有索引的“专有”格式, fork 系统调用来对记录进行排序是没有选择的。我还需要能够知道某种字符串中有多少个代码点,以便使用 ncurses 进行字段编辑、插入和删除显示中的字符。

谢谢!

最佳答案

到目前为止,ICU 库看起来很有前途:我想我会寻求 ICU 库的解决方案,据我所知,它随 Mac Os X 一起提供。http://icu-project.org/apiref/icu4c/

关于c - wcscoll 函数被标记为中毒,我该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14333295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com