你能解释一下extern的意思和其他一些东西吗?

时间:2011-05-24 08:55:35

标签: c++ c

我知道extern C意味着该函数应该用C风格编译,但是extern function_datatype functionname是什么意思?

extern void sharelog(const char *rem_host, const char *username,
         const char *, const char *,
         const char *, const char *);

没有“C”的extern是什么意思?

此外,在几乎每个程序的头文件中,我都看到了

的内容
void sharelog(const char *rem_host, const char *username,
         const char *, const char *,
         const char *, const char *);

为什么在.c / .cpp文件中完成后再次声明该函数? 它有时也会在没有它的论证的情况下宣布

int Function;

此外,某些功能可以这样写:

int CSomething::Somefunction() const

为什么在函数后添加const?

我也偶然发现了具有这些神秘点的功能

void function(int prio, const char *fmt, ...)

我还想提出很多其他的事情,但似乎我已经提出了足够的要求。 我知道你们中的一些人可能会说去学习C / C ++,但是相信我,这些东西不是为初学者讨论的。

2 个答案:

答案 0 :(得分:6)

答案 1 :(得分:1)

没有extern的{​​{1}}来自C ++之前的时间,当你需要一种方法告诉C编译器一个函数“某处”可用时它应该允许链接器弄清楚它。

使用"C"的声明允许编译器将该函数添加到已知名称列表中,即使它无法解析该地址。