gcc和vc的两点区别
作者:朱金灿
来源:https://blog.csdn.net/clever101
gcc和vc的第一点区别是:
int x[n];// 在vc中,n必须是常数,这个内存是在栈上的。当n不是常数时会出现编译错误
int x[n];// 在gcc中,n可以是常量,当n是常量是效果相当于vc下的int x[n];n也可以是变量,当n是变量是相当于int* x= new int[n];这个内存在堆上,申请和回收编译器负责。
gcc和vc的第二点区别是:
vc链接一个动态库需要.h文件、lib文件(导入库文件)和dll文件(动态库文件)。gcc链接一个动态库需要.h文件和so文件。为啥gcc不需要lib文件(导入库文件)呢?这是因为vc的动态库接口函数是默认都不导出的,只有设置导出符号才能导出,就是那个 __declspec(dllexport),而所有的导出函数名都放在lib文件(导入库文件)。而Linux下的动态库是默认所有函数都是导出的,所以so文件意味着lib和dll一体。就是说lib文件决定是调用方只能调用哪些接口,而so文件里面的符号表,把自己里面有什么东西是一览无余的。说得形象些就是vc是你给他一个文档(lib文件),说我这里有这些可以提供给你用,别的免谈,我文档里没写,你想抢那是不行的。而gcc是我直接进你家看你都有啥,我想拿啥就拿啥。
现在觉得gcc的这个设计有点脑残,因为这很容易导致一个问题,就是串库。串库就是两个so里都有同一个函数,那他运行时调用的哪个,就不确定了。这是一个很奇葩也很危险的情况,在实际中也很难调试和排查。
gcc和vc的两点区别相关推荐
- 使用 okHttp 3.0 版本前后的两点区别.(不要入坑哦)
OkHttp 优点: OkHttp会从很多常用的连接问题中自动恢复.如果您的服务器配置了多个IP地址,当第一个IP连接失败的时候,会自动尝试下一个IP.OkHttp还处理了代理服务器问题和SSL握手失 ...
- linux下g++和gcc_Linux中gcc和g ++有什么区别?
linux下g++和gcc gcc和g ++之间的区别 (Difference between gcc and g++) Both are the compilers in Linux to comp ...
- c语言中tc和vc有什么区别,转:写C++用什么编译器好——TC,VC++6.0,DEV C++,VS2005浅显比较...
TC: 现在估计给你钱,你也不会要用TC了吧.一个复制粘帖都不觉得顺手的编译器,确实是不方便的. VC 6.0: 虽然这个软件比较小,一般就是几百兆,用起来也差强人意,不过难免还是存在一些小问题: 小 ...
- VC++6.0和VC++2010的区别
VC6.0和VS2010最大的区别在于默认的字符集,VC6.0默认的字符集为ANSI,而VS2010默认的字符集为UNICODE. 这就造成了,VC6和VS2010在处理字符问题上的不同. 首 ...
- 不同的编译器:GCC G++ C C++的区别
gcc 是c的编译器,g++是c++的编译器.cc一般是一个符号连接,指向gcc.CC一般是makefile里面的一个名字,具体是什么根据实际情况决定. gcc和g++都是GNU(组织)的一个编译器. ...
- gcc和g++有什么区别?
来源 | C语言中文网 发展至今,GCC 编译器已经更新至 V10 版本,其功能也由最初仅能编译 C 语言,扩增至可以编译多种编程语言,其中就包括 C++ . 除此之外,当下的 GCC 编译器还支持编 ...
- GCC G++ C C++的区别
gcc 是c的编译器,g++是c++的编译器.cc一般是一个符号连接,指向gcc. CC一般是makefile里面的一个名字,具体是什么根据实际情况决定. gcc和g++都是GNU(组织)的一个编 ...
- gcc,cc,g++,CC的区别
***gcc是C编译器: ***g++是C++编译器: ***linux下cc一般是一个符号连接,指向gcc ***gcc说明 1.gcc编译常用格式: gcc C源文件 -o 目标文件 或 gcc ...
- 关于gp和mysql的两点区别
1.首先是group by的用法的区别: mysql的限制是比较松的,在mysql中只要是group by中的字段不必在select中出现,但是在gp数据库中在group by中出现的字段必须在sel ...
- gcc / -L 和 -Wl,-rpath 区别
首先需明确一点, 链接阶段查找库的位置和运行时查找库的位置是两码事. -L 指定编译链接时库的搜索目录. -Wl,-rpath 指定程序运行时库搜索目录. 可以使用 ldd 命令查看生成的可执行程序的 ...
最新文章
- OpenStack Ocata Release Notes
- 谁会为小扎的AI管家配音:网民选了这位老帅哥
- mysql主从读写Windows_Windows操作系统下的MySQL主从复制及读写分离
- CouldNOTfindQt4 install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer
- PPT分享:用户画像场景与技术实现
- 浅谈js函数三种定义方式 四种调用方式 调用顺序
- javascript设计模式-装饰者模式
- springcloud微服务学习笔记(四十五):Gateway9527搭建
- 周立功专访:周立功和他的团队已经找到了属于自己的道路
- c语言编程解百马百瓦古题,java编程题90道.doc
- 《Loy解说Eureka服务端源码(二)》
- Python 小白学习之:linux 基础和 python 入门
- 对话翁志:京东大数据如何让技术真正落地
- [转]技术经纪人将成职业新宠
- 人民币金额(数字)大写转换及金币单位切换
- au能否打开m4a文件_什么是M4V文件(以及如何打开一个文件)?
- 查询选修“张三“老师所授课程的学生中,成绩最高的学生信息及其成绩
- 互联互通-标准化成熟度指标分析(更新中)
- 电脑中的"倚天剑+屠龙刀"【推荐】
- 市场调研-全球与中国在线软件文档工具市场现状及未来发展趋势
热门文章
- 偏微分方程数值解的matlab程序,偏微分方程数值解法的MATLAB源码
- 10.Qt元素QTreeWidgetItem
- 百度之星作为座位调整java_百度之星程序设计大赛十周年算法合集20052014.PDF
- 计算机三级——数据库技术真题知识点
- BXP无盘技术应用于网吧的一些经验(转)
- 《概率论与数理统计》(浙大第四版)第五章总结笔记(纯手写)
- 计算机音乐东京不太热,洛天依 - 东京不太热[FLAC格式]
- Qt浅谈之三十二二维码条形码解析
- python量化交易通达信_分享一个可以实战的量化交易策略(适用于通达信系统)...
- Unity3D 官方资源包Standard Assets导入