我知道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 ++,但是相信我,这些东西不是为初学者讨论的。
答案 0 :(得分:6)
答案 1 :(得分:1)
没有extern
的{{1}}来自C ++之前的时间,当你需要一种方法告诉C编译器一个函数“某处”可用时它应该允许链接器弄清楚它。
使用"C"
的声明允许编译器将该函数添加到已知名称列表中,即使它无法解析该地址。