C++程序调用已经被编译后的C函数
来源:互联网 发布:java 源码 attach 编辑:程序博客网 时间:2024/06/05 18:00
来自林锐的《高质量C++编程指南》答案:
如果C++程序要调用已经被编译后的C 函数,该怎么办?
假设某个C 函数的声明如下:
void foo(int x, int y);
该函数被C 编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字用来支持函数重载和类型安全连接。由于编译后的名字不同,C++程序不能直接调用C 函数。C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。
例如:
extern “C”
{
void foo(int x, int y);
// 其它函数
}
或者写成
extern “C”
{
#include “myheader.h”
// 其它C 头文件
}
这就告诉C++编译译器,函数foo 是个C 连接,应该到库中找名字_foo 而不是找
_foo_int_int。C++编译器开发商已经对C 标准库的头文件作了extern“C”处理,所以
我们可以用#include 直接引用这些头文件。
如果C++程序要调用已经被编译后的C 函数,该怎么办?
假设某个C 函数的声明如下:
void foo(int x, int y);
该函数被C 编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字用来支持函数重载和类型安全连接。由于编译后的名字不同,C++程序不能直接调用C 函数。C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。
例如:
extern “C”
{
void foo(int x, int y);
// 其它函数
}
或者写成
extern “C”
{
#include “myheader.h”
// 其它C 头文件
}
这就告诉C++编译译器,函数foo 是个C 连接,应该到库中找名字_foo 而不是找
_foo_int_int。C++编译器开发商已经对C 标准库的头文件作了extern“C”处理,所以
我们可以用#include 直接引用这些头文件。
0 0
- C++程序调用已经被编译后的C函数
- C++程序调用已经被编译后的C函数
- 如果 C++程序要调用已经被编译后的C 函数,该怎么办?extern "C"
- 如果C++程序要调用已经被编译后的C函数,该怎么办?
- 如果C++程序要调用已经被编译后的C函数,该怎么办?
- c++程序调用被C编译器编译后的函数为什么要加extern "C"
- 在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 经典面试题目--在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?
- 网页导航菜单被Flash和播放器等对象挡住的解决办法
- android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事项
- opencv学习系列(五)--- 背景建模
- 数据查找方式
- sqlmap简易教程–帮助文档个人使用经验解析
- C++程序调用已经被编译后的C函数
- uvm_config_db性能权衡
- C++builder资源文件
- 一個簡單的 Linux Kernel Module
- cocos2dx游戏资源加密之XXTEA
- 用eclipse构建maven web项目
- Git的入门教程<一>
- memcached源码分析-----slab automove和slab rebalance
- 单向链表的基本操作