C 程序可以获取标准库中定义的函数的地址吗?标准库,如果是,在什么条件下?
不,一般情况下不是。
根据[namespace.std],形成一个指向标准库函数的指针是未指定的行为,除非该函数被指定作为可寻址的。这也适用于成员函数。
std::invoke(std::boolalpha, std::cout);
在此示例中,std::boolalpha 是由 [fmtflags.manip] 指定的可寻址函数。因此,这一行格式良好,相当于:
std::cout.setf(std::ios_base::boolalpha);
std::invoke(static_cast<ctype_func>(std::tolower), 'A');
但是,对于
不保证意外输出,并且代码甚至可能无法编译。这也适用于 C 标准库中声明的成员函数。
以上是我可以获取 C 语言中标准库函数的地址吗?的详细内容。更多信息请关注PHP中文网其他相关文章!