g++编译出的程序体积问题

g++编译出的程序体积问题,第1张

<iostream>

using namespace std

viod main(viod)

{

cout<<"dsjffjjsljlsfjlj\n"

}

你用gcc的时候是要区别后缀名的,你编译的是c++,所以必须把文件后缀名改成.cpp,如果是.c是会错的!!!

如果还有错的话,就是你 “main”后的括号是全角的!!!,还有main要返回整型的,参数也要是整型!!!

"vc++ 6.0 、tc++ 3.0都不行啊。比如写#include<iostream>或 #include<cmath>等等就不行了,要写成#include <iostream.h>或#include "math.h"一类才行。"

补充:写#include<iostream>

后面要加上using namespace std

要用命名空间!!!

"还有字符串 *** 作不能用“+”、“=”等等。"

要用符号重载才能办到,你可以查一下这方面的资料!!!

每一个C++编译器都支持标准的C++的,只是各自有自己的特点而已。C++语言规范没有指定平台,使得C++编译器在各个平台上都有各自的实现。但是,在实际使用当中,平台依赖性是客观存在的,包括 *** 作平台和开发平台,而因各平台的差异性,特定平台上的C++编译器在实现上对标准C++规范有所修改、有所扩充也是无可厚非的,毕竟C++不是一个强制性规范。

C++编译器很重要, 但是IDE有时候更加重要.

给你推荐ICC

ICC是一个非常优秀的编译器, 这个编译器提供了对INTEL处理器的最大支持,这个是其他编译器无法做到的. 就凭这一点就足够了. 例如,它可以针对一款特定的处理器做优化. 还有很多,我懒得说了

代码如下:

#include <stdio.h>

int main ()

{float h,r,l,s,sq,vq,vz

float pi=3.141526

printf("请输入圆半径r,圆柱高h∶")

scanf("%f,%f",&r,&h)               //要求输入圆半径r和圆柱高h

sq=4*pi*r*r                       //计算圆球表面积sq

vq=3.0/4.0*pi*r*r*r               //计算圆球体积vq

printf("圆球表面积为:   sq=%6.2f\n",sq)

printf("圆球体积为:     v=%6.2f\n",vq)

return 0

}

扩展资料:

C语言编译器:

1、GCC,GNU组织开发的开源免费的编译器

2、MinGW,Windows *** 作系统下的GCC

3、Clang,开源的BSD协议的基于LLVM的编译器

4、Visual C++ :: cl.exe,Microsoft VC++自带的编译器

C语言注意事项:

1、所有的 C 语言程序都需要包含 main() 函数。 代码从 main() 函数开始执行。

2、/* ... */ 用于注释说明。

3、printf() 用于格式化输出到屏幕。printf() 函数在 "stdio.h" 头文件中声明。

4、stdio.h 是一个头文件 (标准输入输出头文件) , #include 是一个预处理命令,用来引入头文件。 当编译器遇到 printf() 函数时,如果没有找到 stdio.h 头文件,会发生编译错误。

5、return 0 语句用于表示退出程序。

gcc中静态连接和动态链接的方法:

1:GCC的静态连接,直接把静态库的名字放在gcc后面

例如:gcc -o test test.c staticlib.a

2:GCC的动态连接,使用-l指定库,-L指定库的路径,注意动态库名必须是lib开头,后缀名为.so

例如: gcc -o test test.c -lpthread -L/usr/lib/

3:静态库也可以采用动态库的连接方法,如果目录中同时存在2种库,gcc会优先选择动态库。如果一条gcc链接指令中既要链接动态库又要链接静态库,可以用-Wl,-dn 和-Wl,-dy参数选项来切换。

静态连接和动态链接的主要区别:

1:静态连接的时候,静态库的所有执行代码被直接编译到目标程序中。而动态连接的时候,仅仅把动态库的函数和变量的符号名,地址偏移量等导入到目标程序。只有在目标程序运行的时候才把动态库的执行代码加载到内存中。

2:动态链接的项目容易管理,把不同模块封装成不同的动态库,如果模块功能修改,一般只需要重新生成该动态库,不用重新编译其他模块和目标程序。而静态链接的程序修改任何一个地方都必须重新编译整个程序

3:静态链接生成的目标程序体积比动态链接的大,但是加载速度更快,发布更容易,不需要检查发布机器上是否有该动态库或者动态库版本是否符合要求。

4:如果多个程序使用一个动态库,则该库的执行代码只会在内存中加载一次。而静态库是多次加载(事实上静态库连接完就没用了,等于目标程序的一部分)。

5:从调试的角度来说,静态连接的程序调试方法和独立程序没有任何区别,而动态库的调试相对要复杂一些,因为库里面的符号地址都是相对地址。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12131601.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存