任何人都可以指出我strlen()
在GCC中的定义吗?我一直在抱怨释放4.4.2现在大约半小时(而谷歌Google疯狂),我似乎无法找到strlen()
实际执行的地方。
发布于 2018-05-08 13:25:53
你应该看看glibc,而不是GCC--它似乎被定义strlen.c
- 这里是glibc版本2.7的strlen.c的链接...这里是链接到strlen.c的glibc SVN仓库的链接。
你应该看glibc而不是gcc的原因是:
GNU C库被用作GNU系统中的 C库和大多数带有Linux内核的系统。
发布于 2018-05-08 13:49:32
gcc通常会包含它自己的strlen副本#include <string.h>
。如果你忘记了,你会得到一个警告:
file_name:line_number: warning: incompatible implicit declaration of built-in function 'strlen'
并且gcc将内联在x86上的副本是repnz scasb asm变体,除非您传递-Werror或-fno-builtin。与此相关的文件位于gcc/config/<platform>/<platform>.{c,md}
它也由gcc / builtins.c控制。如果您想知道是否以及如何将strlen()优化为常量,请参阅tree c_strlen(tree src, int only_value)
此文件中定义的函数。它还控制strlen(等等)如何扩展和折叠(基于前面提到的配置/平台)
https://stackoverflow.com/questions/-100004039
复制相似问题