【发布时间】:2020-03-05 22:51:41
【问题描述】:
在 C 语言中,我可以在头文件中声明结构和一些公共函数,而在源文件中可以将一些“私有”函数声明为静态。例如:
foo.h
typedef struct Foo {
...
} Foo;
void func1(Foo *foo);
foo.c
#include "foo.h"
static void func2(Foo *foo) {...}
void func1(Foo *foo) {...}
在这种情况下,func2 是内部链接的。这对 C++ 类方法可行吗?如果我写:
foo.hpp
struct Foo {:
void func1();
private:
void func2();
};
func2 仍将与外部链接。有没有办法让它内部保留它在结构中?
【问题讨论】:
-
不,没有。 C++ 不能以这种方式工作。没有什么能阻止你在翻译单元中声明静态函数,比如 C,但它不会是类方法。
-
@Sam 为什么不将其发布为答案?
标签: c++ c linker translation-unit