阅读:1896回复:10
寻找 memcmp 的替代函数.
memcmp 在 驱动环境不可用啊,谁帮帮我啊
|
|
最新喜欢:![]() |
沙发#
发布于:2005-06-08 22:19
可以用RtlCompareMemory
|
|
板凳#
发布于:2005-06-09 10:48
内核下都用unicode,所以用unicode的比较函数
LONG RtlCompareUnicodeString( IN PUNICODE_STRING String1, IN PUNICODE_STRING String2, IN BOOLEAN CaseInSensitive ); |
|
|
地板#
发布于:2005-06-09 11:29
微软的memcmp函数,只不过是宽字符的
inline int wmemcmp(const wchar_t *_S1, const wchar_t *_S2, size_t _N) {for (; 0 < _N; ++_S1, ++_S2, --_N) if (*_S1 != *_S2) return (*_S1 < *_S2 ? -1 : +1); return (0); } |
|
地下室#
发布于:2005-06-09 11:32
更多的函数请看下边
#ifdef __cplusplus inline int fwide(FILE *, int _M) {return (_M); } inline int mbsinit(const mbstate_t *) {return (1); } inline const wchar_t *wmemchr(const wchar_t *_S, wchar_t _C, size_t _N) {for (; 0 < _N; ++_S, --_N) if (*_S == _C) return (_S); return (0); } inline int wmemcmp(const wchar_t *_S1, const wchar_t *_S2, size_t _N) {for (; 0 < _N; ++_S1, ++_S2, --_N) if (*_S1 != *_S2) return (*_S1 < *_S2 ? -1 : +1); return (0); } inline wchar_t *wmemcpy(wchar_t *_S1, const wchar_t *_S2, size_t _N) {wchar_t *_Su1 = _S1; for (; 0 < _N; ++_Su1, ++_S2, --_N) *_Su1 = *_S2; return (_S1); } inline wchar_t *wmemmove(wchar_t *_S1, const wchar_t *_S2, size_t _N) {wchar_t *_Su1 = _S1; if (_S2 < _Su1 && _Su1 < _S2 + _N) for (_Su1 += _N, _S2 += _N; 0 < _N; --_N) *--_Su1 = *--_S2; else for (; 0 < _N; --_N) *_Su1++ = *_S2++; return (_S1); } inline wchar_t *wmemset(wchar_t *_S, wchar_t _C, size_t _N) {wchar_t *_Su = _S; for (; 0 < _N; ++_Su, --_N) *_Su = _C; return (_S); } } /* end of extern \"C\" */ inline wchar_t *wmemchr(wchar_t *_S, wchar_t _C, size_t _N) {return ((wchar_t *)wmemchr((const wchar_t *)_S, _C, _N)); } inline wchar_t *wcschr(wchar_t *_S, wchar_t _C) {return ((wchar_t *)wcschr((const wchar_t *)_S, _C)); } inline wchar_t *wcspbrk(wchar_t *_S, const wchar_t *_P) {return ((wchar_t *)wcspbrk((const wchar_t *)_S, _P)); } inline wchar_t *wcsrchr(wchar_t *_S, wchar_t _C) {return ((wchar_t *)wcsrchr((const wchar_t *)_S, _C)); } inline wchar_t *wcsstr(wchar_t *_S, const wchar_t *_P) {return ((wchar_t *)wcsstr((const wchar_t *)_S, _P)); } #endif 一看其实微软的代码也是挺垃圾的,也使用XXXX1,XXXX2之类的 偶在C:\\Program Files\\Microsoft\\Visual Studio\\VC98\\Include\\ wchar.h中找到的 |
|
5楼#
发布于:2005-06-09 17:57
没啥垃圾的,不会产生歧义,也好理解。
S=source,所以没啥问题。 |
|
|
6楼#
发布于:2005-06-10 21:11
感谢各位的帮助!
不过我还是用了 memcmp DDK还是支持它的,不过需要在 SOURCES 文件里 加一个 .lib文件进来 |
|
7楼#
发布于:2005-06-11 00:00
建议使用rtlxx函数
普通的运行库可能在某些运行级下出错. |
|
|
8楼#
发布于:2005-06-11 10:34
谢谢大侠指点! 可是我怎么查它是否在某些运行级下安全呢?
另外,我用了不少的普通C函数,好象还没有出错. 根据版主的经验,请指点一二 |
|
9楼#
发布于:2005-06-11 10:45
znsoft 管理员你好!
我想请问 : 为什么我们这个论坛这么慢啊? 白天还好点,晚上点一下网页要等30秒钟. |
|
10楼#
发布于:2005-06-11 14:09
不是刚换的机房的吗
|
|