1

功能。c (我不能编辑这个文件)

#define FOO    1

#if FOO == 1
    void Foo() {}
#endif

cpp

class MyClass
{
#if FOO == 1
    void CppFoo()
    {
        Foo();
    }
#endif
}

我想做同样的事情,但不使用TESTmain.cpp 文件中的定义

我想做的事:

class MyClass
{
#if (extern "c" Foo() exist)
    void CppFoo()
    {
        Foo();
    }
#endif
}

如果尚未声明CppFoo()静态函数,则不必声明该方法。Foo()

我怎样才能做到这一点?

4

1 回答 1

2

您可以使用弱属性,例如:

文件交流:

#include <stdio.h>

int foo() __attribute__ ((weak));
int foo() {}

int main(int argc, char** argv)
{
    foo();
}

文件 bc:

#include <stdio.h>

int foo () {
    printf("Hello Wurld!\n");
}

现在,如果您不编译和链接 bc,则调用默认(无操作)函数foo(),否则调用foo()来自 bc的函数

于 2020-01-31T13:30:14.257 回答