__buildin_strrchr 和 库strrchr
时间: 2024-06-04 19:06:39 浏览: 94
__buildin_strrchr是GCC编译器内置函数,用于在字符串中查找最后一个指定字符的位置。而库函数strrchr也是用于查找最后一个指定字符的位置,但它是C标准库中提供的函数,需要在使用前引入头文件。
两者的区别在于实现方式和使用方式不同。__buildin_strrchr是编译器内置的函数,不需要引入头文件,直接调用即可;而库函数strrchr需要引入头文件<string.h>,并且需要链接对应的库文件。
此外,__buildin_strrchr的执行效率可能会更高一些,因为它是编译器内置的函数,编译器可以对其进行一些优化。但是它不是标准库函数,因此不具备可移植性。而库函数strrchr是标准库函数,可以在不同的平台和编译器中使用。
相关问题
#define __FILENAME__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\')+1 : __FILE__)
在C++中,`#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)` 是一种常见的宏定义,用于获取当前文件的文件名。如果文件路径中包含斜杠(/),则返回斜杠后面的部分作为文件名;否则,返回整个文件路径。
另外,为了解决分支测不到的问题,并避免返回一个空指针,可以使用以下代码作为更好的方案:
```cpp
#define __FILENAME__ (strrchr("/" __FILE__, '/') + 1)
```
这个宏定义在文件路径前添加了一个斜杠,以确保`strrchr`函数能够找到最后一个斜杠并返回斜杠后面的部分作为文件名。
所以,如果你想在C++中获取当前文件的文件名,可以使用以下宏定义:
```cpp
#define __FILENAME__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\')+1 : __FILE__)
```
strrchr
strrchr是一个C语言标准库函数,用于在一个字符串中查找指定字符的最后一次出现位置。函数原型为:
```c
char *strrchr(const char *s, int c);
```
其中,s为要查找的字符串,c为要查找的字符。函数返回一个指向最后一次出现c的位置的指针,如果未找到则返回NULL。
阅读全文