gpt4 book ai didi

c++ - 具有C语言绑定(bind)的静态成员函数?

转载 作者:可可西里 更新时间:2023-11-01 17:36:49 26 4
gpt4 key购买 nike

以下 C++ 代码使用 Visual C++ 和 g++ 编译:

struct S
{
static void foo();
};

extern "C"
void S::foo() {}

struct T
{
static void foo();
};

extern "C"
void T::foo() {}

auto main() -> int
{
S().foo();
T().foo();
}
  • 有效吗?

  • 如果它是有效的,因为实现可能在一个单独的翻译单元中,这是否意味着静态成员函数总是具有与 C 函数相同的调用约定(如果不是,它怎么不意味着)?

最佳答案

C++11 7.5/4 “链接规范”

A C language linkage is ignored in determining the language linkage of the names of class members and the function type of class member functions.

因此您的示例在没有格式错误或错误的意义上是有效的,但是 extern "C" 应该对 S::foo() 没有影响或 T::foo()

关于c++ - 具有C语言绑定(bind)的静态成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34037212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com