📄 c&c++ young library +
字号:
标准库的依赖很大,如果是在嵌入式系统上使用的话,这些标准库函数并不一定能得到完
全的支持,因此,在嵌入式系统中yc_string.*要慎用。目前的C编译器对宽字符的支持不
甚理想。比较好的是在PC以上的硬件平台上使用的编译器,而像编译DSP、ARM等嵌入式硬
件平台程序的C编译器根本就不支持宽字符。然而即使是在PC平台上,Microsoft Visual C++、
Borland C++ Builder等主流编译器对宽字符也并不是完全支持,而像GCC这种号称可移植
的编译器,相同版本的编译器在不同的硬件平台上会呈现出完全不同的支持,而国际上流
行的编码方式也多为比宽字符更长的多字节编码。基于这些考虑,我并不建议使用标准库
定义的宽字符,感觉用处不大!
**2.2**
youngcpp程序库的移植。
*2.2.1*
youngcpp程序库是一个C++模板库,实现这个库的目的是想验证能否以youngc为内核,
以C++ template为shell,实现一个接口与STL兼容的模板库,在完成并试验了vector之后,
发现是可行的,于是干脆把STL的容器全部实现了。由于youngcpp的容器类具有move语意,
所以使用youngcpp实现复合容器具有比STL更高的效率。
youngcpp是以标准C++的模板来实现的,因此大多数嵌入式平台使用的C++编译器都无
法正确编译,事实上,除了GCC目前我所用过的嵌入式平台编译器均无法编译。在PC平台
上,Borland C++ Builder 6(SP4)勉强可以编译,Microsoft Visual C++ 7.1以下的微软
编译器是无法编译的,GCC 3.2以下的版本可能也无法通过编译,GCC 4.0以上的版本我没
有用过,不知道是否能顺利编译。
*2.2.2*
ylib-$(VERSION)/young/youngcpp.hpp 包含有 youngcpp 库中所有的头文件,直接包
含该文件会简单很多。下面列出 youngcpp 子库中各个文件的功能及其依赖关系:
-------------------------------------------------------------------------------
文件名 功能 包含文件
-------------------------------------------------------------------------------
ycpp_configuration.hpp youngcpp程序库条件编译宏设置文件 无
ycpp_function.hpp 传递给youngc函数指针的适配函数 无
ycpp_functional.hpp 扩展的function object youngc/yc_function.h
ycpp_string.hpp
ycpp_algorithm.hpp 对STL算法的扩展 cstring
iterator
algorithm
ycpp_traits.hpp
ycpp_traits.hpp 特性萃取 ycpp_configuration.hpp
type_traits(TR1增补)
ycpp_memory.hpp 存储管理 new
cstring
ycpp_traits.hpp
ycpp_vector.hpp 同STL的vector容器 memory
iterator
stdexcept
algorithm
youngc/yc_dymemarr.h
youngc/yc_dyrscarr.h
ycpp_memory.hpp
ycpp_deque.hpp 同STL的deque的容器 memory
iterator
stdexcept
algorithm
youngc/yc_chkarray.h
ycpp_memory.hpp
ycpp_list.hpp 同STL的list的容器 memory
iterator
stdexcept
youngc/yc_dblnklst.h
youngc/yc_memory.h
ycpp_memory.hpp
ycpp_function.hpp
ycpp_algorithm.hpp
ycpp_slist.hpp 单链表模板容器的实现 memory
iterator
stdexcept
youngc/yc_sglnklst.h
youngc/yc_memory.h
ycpp_memory.hpp
ycpp_function.hpp
ycpp_algorithm.hpp
ycpp_map.hpp 同STL的map、multimap的容器 memory
utility
iterator
algorithm
functional
youngc/yc_bbstree.h
youngc/yc_memory.h
ycpp_memory.hpp
ycpp_function.hpp
ycpp_set.hpp 同STL的set、multiset的容器 memory
utility
iterator
algorithm
functional
youngc/yc_bbstree.h
youngc/yc_memory.h
ycpp_memory.hpp
ycpp_function.hpp
ycpp_unordered_map.hpp 同TR1新增的unordered_map、 memory
unordered_multimap容器 utility
iterator
functional
youngc/yc_hashtable.h
youngc/yc_memory.h
ycpp_memory.hpp
ycpp_function.hpp
ycpp_functional.hpp
ycpp_unordered_set.hpp 同TR1新增的unordered_set、 memory
unordered_multiset容器 utility
iterator
functional
youngc/yc_hashtable.h
youngc/yc_memory.h
ycpp_memory.hpp
ycpp_function.hpp
ycpp_functional.hpp
-------------------------------------------------------------------------------
*2.2.3*
youngcpp子库的移植主要由ycpp_configuration.hpp中定义的条件编译宏来完成控制,定义的
宏及其含义如下:
1、__MACRO_CPLUSPLUS_YOUNG_LIBRARY_COMPILER_SUPPORT_LONG_LONG_TYPE__
若C++编译器支持long long类型,则定义该宏。
2、__MACRO_CPLUSPLUS_YOUNG_LIBRARY_COMPILER_SUPPORT_C95_WIDE_CHARACTER__
若C++编译器及附带的标准库支持ISO C95标准定义的宽字符功能,则定义该宏。
3、__MACRO_CPLUSPLUS_YOUNG_LIBRARY_COMPILER_SUPPORT_STANDARD_TYPE_TRAITS__
若C++编译器及附带的标准库支持TR1定义的<type_traits>文件,则定义该宏。
4、__MACRO_CPLUSPLUS_YOUNG_LIBRARY_COMPILER_SUPPORT_STANDARD_HASH_FUNCTION_OBJECT__
若C++编译器及附带的标准库支持TR1定义的<functional>中新增的hash function object,
则定义该宏。
*2.2.4*
使用建议:
由于youngcpp的底层实现是建立在youngc基础上的模板库,因此编译youngcpp的时候,
需要将其所依赖的各个youngc模块加入工程,依赖关系可以参看2.2.2列出的程序库文件表。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -