2019-12-22 13:51发布
onepower 发表于 2017-9-21 09:36 告诉C++编译器, 括号里面的代码 当做是C语言来编译
security 发表于 2017-9-21 08:26 你的理解是对的。 更多信息,网上搜一下,有很多说明。
takashiki 发表于 2017-9-21 10:56 我经常在C++和C交互调用的代码中写这样的东西,难道一直都错了?但是编译器并不认为我错了,结果也是正确 ...
最多设置5个标签!
还有这回事?我一直认为加了只是不添加c++修饰呢
我经常在C++和C交互调用的代码中写这样的东西,难道一直都错了?但是编译器并不认为我错了,结果也是正确的。
写了extern "C"的C++代码依然是C++,啥时变成C了?只是函数命名等等不使用C++修饰了,当然也就无法进行函数重载了而已。
比如:
- extern "C" int GetListSize(void* List) {
- std::list* lst = (std::list*) List;
- return lst->size();
- }
复制代码您评断下这个代码是C还是C++,有没有问题你的说法是正确的。
这确实只是限制符号名按照 C 的规范来走。
有extern "C" 之后,函数符号就会变成C函数符号生成方式,可以被C语言访问到
一周热门 更多>