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 中国語 Web サイトの他の関連記事を参照してください。