在c ++中链接"C"样式代码

dea*_*mer -1 c++ extern

我试图在C++中运行C样式代码,我的编译器给出以下错误:

第5行:错误:字符串常量之前的预期unqualified-id

第二:我的目标是理解"第d行"的错误.

using namespace std;
typedef int (*pfun)(int);        // line a
int main()
{
    extern "C" void foo(pfun);   // line b
    extern "C" int g(int);       // line c 
    foo( g );                    // line d, Error

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

edw*_*inc 5

您需要将外部"C"行移动到全局范围.

    #include <cstdlib>

    using namespace std;

    typedef int (*pfun)(int);        // line a

    extern "C" void foo(pfun);       // line b
    extern "C" int g(int);           // line c

    int main(void)
    {
        foo( g );                    // line d, Error

        return 0;
    }        
Run Code Online (Sandbox Code Playgroud)