作者:朱金灿

来源: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的两点区别相关推荐

  1. 使用 okHttp 3.0 版本前后的两点区别.(不要入坑哦)

    OkHttp 优点: OkHttp会从很多常用的连接问题中自动恢复.如果您的服务器配置了多个IP地址,当第一个IP连接失败的时候,会自动尝试下一个IP.OkHttp还处理了代理服务器问题和SSL握手失 ...

  2. linux下g++和gcc_Linux中gcc和g ++有什么区别?

    linux下g++和gcc gcc和g ++之间的区别 (Difference between gcc and g++) Both are the compilers in Linux to comp ...

  3. c语言中tc和vc有什么区别,转:写C++用什么编译器好——TC,VC++6.0,DEV C++,VS2005浅显比较...

    TC: 现在估计给你钱,你也不会要用TC了吧.一个复制粘帖都不觉得顺手的编译器,确实是不方便的. VC 6.0: 虽然这个软件比较小,一般就是几百兆,用起来也差强人意,不过难免还是存在一些小问题: 小 ...

  4. VC++6.0和VC++2010的区别

    VC6.0和VS2010最大的区别在于默认的字符集,VC6.0默认的字符集为ANSI,而VS2010默认的字符集为UNICODE. 这就造成了,VC6和VS2010在处理字符问题上的不同.     首 ...

  5. 不同的编译器:GCC G++ C C++的区别

    gcc 是c的编译器,g++是c++的编译器.cc一般是一个符号连接,指向gcc.CC一般是makefile里面的一个名字,具体是什么根据实际情况决定. gcc和g++都是GNU(组织)的一个编译器. ...

  6. gcc和g++有什么区别?

    来源 | C语言中文网 发展至今,GCC 编译器已经更新至 V10 版本,其功能也由最初仅能编译 C 语言,扩增至可以编译多种编程语言,其中就包括 C++ . 除此之外,当下的 GCC 编译器还支持编 ...

  7. GCC G++ C C++的区别

    gcc 是c的编译器,g++是c++的编译器.cc一般是一个符号连接,指向gcc.  CC一般是makefile里面的一个名字,具体是什么根据实际情况决定.  gcc和g++都是GNU(组织)的一个编 ...

  8. gcc,cc,g++,CC的区别

    ***gcc是C编译器: ***g++是C++编译器: ***linux下cc一般是一个符号连接,指向gcc ***gcc说明 1.gcc编译常用格式: gcc  C源文件 -o 目标文件 或 gcc ...

  9. 关于gp和mysql的两点区别

    1.首先是group by的用法的区别: mysql的限制是比较松的,在mysql中只要是group by中的字段不必在select中出现,但是在gp数据库中在group by中出现的字段必须在sel ...

  10. gcc / -L 和 -Wl,-rpath 区别

    首先需明确一点, 链接阶段查找库的位置和运行时查找库的位置是两码事. -L 指定编译链接时库的搜索目录. -Wl,-rpath 指定程序运行时库搜索目录. 可以使用 ldd 命令查看生成的可执行程序的 ...

最新文章

  1. OpenStack Ocata Release Notes
  2. 谁会为小扎的AI管家配音:网民选了这位老帅哥
  3. mysql主从读写Windows_Windows操作系统下的MySQL主从复制及读写分离
  4. CouldNOTfindQt4 install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer
  5. PPT分享:用户画像场景与技术实现
  6. 浅谈js函数三种定义方式 四种调用方式 调用顺序
  7. javascript设计模式-装饰者模式
  8. springcloud微服务学习笔记(四十五):Gateway9527搭建
  9. 周立功专访:周立功和他的团队已经找到了属于自己的道路
  10. c语言编程解百马百瓦古题,java编程题90道.doc
  11. 《Loy解说Eureka服务端源码(二)》
  12. Python 小白学习之:linux 基础和 python 入门
  13. 对话翁志:京东大数据如何让技术真正落地
  14. [转]技术经纪人将成职业新宠
  15. 人民币金额(数字)大写转换及金币单位切换
  16. au能否打开m4a文件_什么是M4V文件(以及如何打开一个文件)?
  17. 查询选修“张三“老师所授课程的学生中,成绩最高的学生信息及其成绩
  18. 互联互通-标准化成熟度指标分析(更新中)
  19. 电脑中的"倚天剑+屠龙刀"【推荐】
  20. 市场调研-全球与中国在线软件文档工具市场现状及未来发展趋势

热门文章

  1. 偏微分方程数值解的matlab程序,偏微分方程数值解法的MATLAB源码
  2. 10.Qt元素QTreeWidgetItem
  3. 百度之星作为座位调整java_百度之星程序设计大赛十周年算法合集20052014.PDF
  4. 计算机三级——数据库技术真题知识点
  5. BXP无盘技术应用于网吧的一些经验(转)
  6. 《概率论与数理统计》(浙大第四版)第五章总结笔记(纯手写)
  7. 计算机音乐东京不太热,洛天依 - 东京不太热[FLAC格式]
  8. Qt浅谈之三十二二维码条形码解析
  9. python量化交易通达信_分享一个可以实战的量化交易策略(适用于通达信系统)...
  10. Unity3D 官方资源包Standard Assets导入