C++ 中 extern "C" 用法小结C++ 中 extern "C" 用法小结(http://blog.csdn.net/playingguitar/archive/2006/08/15/1066127.aspx)
2010-02-02 15:36
681 查看
昨天晚上翻《C++ Primer》偶尔看见介绍
extern "C"
的那一节,看着看着竟然有点糊涂了,觉得书上说的好像有点不对。记得以前也曾经看过这一节,也看过几篇介绍这个的文章,这次又犯糊涂,看来还是以前没有搞
清楚。后来仔细看了看书上的介绍,又翻了一下《The C++ Programming
Language》,总算清楚了一些,书上说的没错,是我以前理解的有问题。
在C++中 extern "C"
的两种用法
1. 如果要在C++程序中调用C语言写的函数, 在C++程序里边用 extern "C"
修饰要被调用的这个C程序,告诉C++编译器此函数是C语言写的,是C语言编译器生成的,调用他的时候请按照C语言习惯传递参数等。如:
//
在C++程序里边声
明该函数
extern
"
C
"
int
strcmp(
const
char
*
s1,
const
char
*
s2);
也可以这样
//
在C++程序里边声
明该函数
extern
"
C
"
{
#include
<
string
.h
>
//
string.h里边包含了所要调用的函数的声明
}
2. 用C++语言写的一个函数,如果想让这个函数可以被其他C语言程序所用,则用extern "C"
来告诉C++编译器,请用C语言习惯来编译此函数。如:
//
在C++程序里该函数
extern
"
C
"
int
strcmp(
const
char
*
s1,
const
char
*
s2)
{
while
(
*
s1
&&
*
s1
++
==
*
s2
++
) {
}
return
*
s1
-
*
s2;
}
extern "C"
的那一节,看着看着竟然有点糊涂了,觉得书上说的好像有点不对。记得以前也曾经看过这一节,也看过几篇介绍这个的文章,这次又犯糊涂,看来还是以前没有搞
清楚。后来仔细看了看书上的介绍,又翻了一下《The C++ Programming
Language》,总算清楚了一些,书上说的没错,是我以前理解的有问题。
在C++中 extern "C"
的两种用法
1. 如果要在C++程序中调用C语言写的函数, 在C++程序里边用 extern "C"
修饰要被调用的这个C程序,告诉C++编译器此函数是C语言写的,是C语言编译器生成的,调用他的时候请按照C语言习惯传递参数等。如:
//
在C++程序里边声
明该函数
extern
"
C
"
int
strcmp(
const
char
*
s1,
const
char
*
s2);
也可以这样
//
在C++程序里边声
明该函数
extern
"
C
"
{
#include
<
string
.h
>
//
string.h里边包含了所要调用的函数的声明
}
2. 用C++语言写的一个函数,如果想让这个函数可以被其他C语言程序所用,则用extern "C"
来告诉C++编译器,请用C语言习惯来编译此函数。如:
//
在C++程序里该函数
extern
"
C
"
int
strcmp(
const
char
*
s1,
const
char
*
s2)
{
while
(
*
s1
&&
*
s1
++
==
*
s2
++
) {
}
return
*
s1
-
*
s2;
}
相关文章推荐
- 自己动手写操作系统--"Hello, OS world!"http://blog.csdn.net/zieckey/archive/2007/05/15/1609908.aspx
- 使用 CL 编译器选项查看 C++ 类内存布局 (转载)http://blog.csdn.net/zhangcunli/archive/2009/10/23/4720781.aspx
- C++ 中 extern "C" 用法小结
- 什么是 RESTful 设计(转自http://blog.csdn.net/goodxp/archive/2007/11/25/1901361.aspx & IBM Help)
- [转] 水晶报表Q&A [http://blog.csdn.net/wzhibin/archive/2007/06/01/1634209.aspx]
- svn 中tag branch trunk 的用法(转自:http://blog.csdn.net/mqboss/archive/2010/10/22/5958225.aspx)
- C++ 中 extern "C" 用法小结
- C++ 事件机制实现(转载自http://blog.csdn.net/khler/archive/2007/08/07/1729638.aspx)
- 史上最强之dos命令-"FOR"-高级应用范例(來源於網絡http://blog.csdn.net/ahpo/archive/2006/06/19/812501.aspx)
- auto_ptr作用和用法(转:http://blog.csdn.net/danforn/archive/2008/06/30/2598413.aspx)
- C++ 中 extern "C" 用法小结
- c++专题: const(转自http://blog.csdn.net/foxbillcsdn/archive/2006/05/24/752310.aspx)
- group、grouping、rollup、cube的用法和区别(本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/junmail/archive/2006/12/26/1463132.aspx)
- C++项目中的extern "C" {}(转自:http://www.cnblogs.com/skynet/archive/2010/07/10/1774964.html)
- 解析“extern” (转自http://blog.csdn.net/keensword/archive/2005/06/23/401114.aspx)
- C++ 虚函数表解析(转自http://blog.csdn.net/haoel/archive/2007/12/18/1948051.aspx)
- elf文件格式http://blog.csdn.net/coutcin/archive/2006/08/15/1065433.aspx
- 【Android内核】下载编译android kernel( 原文地址 http://blog.csdn.net/chizhaolin/archive/2010/07/08/5721539.aspx)
- ant 介绍 http://blog.csdn.net/sunjavaduke/archive/2007/03/08/1523819.aspx
- 学习UpdatePanel控件-看原文有图,本文只为个人备忘(转载:http://blog.csdn.net/ILOVEMSDN/archive/2007/11/11/1879343.aspx)