我只创建一个标头库,我想检查用户是否已经定义了,以便我可以使用memcpy。我在网上读到了像stdio这样的库是如何拥有保护宏的,但是我找不到哪一个用于string.h. h。有什么想法吗?还是有一种方法只是看看memcpy是否是一个函数?
发布于 2021-04-24 17:38:14
您可以很好地判断string.h是否包含了,而不是。
根据(草案) , paragraph 1 C11标准:
头
<string.h>声明一个类型和几个函数,并定义一个宏,用于操作字符类型数组和其他作为字符类型数组处理的对象。类型为size_t,宏为NULL。
如果NULL是未定义的,则用户在包含标头之前不可能包含string.h。
我认为没有一种可移植的方法可以确定是否包含了string.h 和。
发布于 2021-04-24 17:56:00
如果您需要<string.h>,请自己包含它。您还可以转发-声明memcpy并使用它,而不包括任何内容:
void* memcpy( void *restrict dest, const void *restrict src, size_t count );https://stackoverflow.com/questions/67245359
复制相似问题