4.GCC/G++编译实例
当前有两个源文件 main.c 和 factorial.c,现在要编译生成一个计算阶乘的程序(因 int 类
型大小的限制,读者不能输入太大的值)。源代码如下:
// factorial.c 源代码
#include
#include
int factorial (int n) //计算数值 n 的阶乘
{
if(n <= 1)
return 1;
else
return factorial (n - 1) * n;
}
//main.c 源代码
#include
#include
int factorial (int n);
int main (int argc, char **argv)
{
int n;
if(argc < 2) { //要求输入的参数为两个,一个为命令本身,另一个为数值
printf ("Usage: %s \n", argv [0]);
return -1;
}
else{
n = atoi (argv[1]); //将输入的第二个参数(字符类型)转换为数值以便计算
printf ("Factorial of %d is %d.\n", n, factorial (n));
}
return 0;
}
然后在终端中使用 gcc -c 命令编译源代码。
[root@localhost ch0202]# gcc -c main.c
结果编译错误:
[liyang@LYLinux GCC Test]$ gcc -c main.c
main.c:1:10: error: #include expects "FILENAME" or
main.c:2:10: error: #include expects "FILENAME" or
main.c: In function ‘main’:
main.c:9: warning: incompatible implicit declaration of built-in function ‘printf’
main.c:15: warning: incompatible implicit declaration of built-in function ‘printf’
不知道是什么原因。是不是环境搭建的不正确?清高手不吝赐教!
谢谢


shenhao0129 于 2009-09-15 18:52:37发表:
我晕!貌似很多的都是一些很基础的东西的啊
ly_chaojilong 于 2009-09-15 09:04:28发表:
谢谢大家!
gxylcqx 于 2009-09-10 21:27:20发表:
[i=s] 本帖最后由 gxylcqx 于 2009-9-11 12:19 编辑 [/i]
/* aa.c */
#include
#include
int factorial (int n) //计算数值 n 的阶乘
{
if(n <= 1)
return 1;
else
return factorial (n - 1) * n;
}
#include
#include
#include"aa.c"
factorial (int n);
int main (int argc, char **argv)
{
int n;
if(argc < 2) { //要求输入的参数为两个,一个为命令本身,另一个为数值
printf ("Usage: %s \n", argv [0]);
return -1;
}
else{
n = atoi (argv[1]); //将输入的第二个参数(字符类型)转换为数值以便计算
printf ("Factorial of %d is %d.\n", n, factorial(n));
}
return 0;
}
编译运行能通过了,就是#include的问题
后边不加文件名 ,即使win下的Tc有时都不让过,何况严格按语法标准执行的GCC,有些书不知道怎么回事,忽略这个,
甚至有些直接就main()了连#include 都不要。。。
amgesty 于 2009-09-09 14:54:02发表:
不想using namespace std的话在include 头文件就改成 iostream.h
alick 于 2009-09-09 10:42:48发表:
13# ly_chaojilong
能。但默认情况下,gcc连接( link) C的库。g++连接C++的库。
所以对C++程序,g++方便
ly_chaojilong 于 2009-09-09 09:19:20发表:
我看有些资料介绍了gcc和g++的区别,我理解好像gcc也能编译C++吧。呵呵,我不是太了解,瞎说,谁能给个准确说法??版主??
rgwan 于 2009-09-08 02:16:25发表:
C++要用g++来编译
ly_chaojilong 于 2009-09-07 14:44:51发表:
或者:
return 0;
#include
using namespace std;
int main (int argc,char**argv)
{
cout<<"Hello, world!"<
}
xiazhouquan 于 2009-09-07 14:23:49发表:
学习了
ly_chaojilong 于 2009-09-07 13:43:42发表:
问题解决:
return 0;
原因:
C++ 1998 要求cout and endl被调用使用'std::cout'和'std::endl'格式,或using namespace std;
修改后:
#include
int main (int argc,char**argv)
{
std::cout<<"Hello, world!"<
}
编译:g++ -c hello.C
通过了!!!
谢谢大家!!!
ly_chaojilong 于 2009-09-07 12:58:52发表:
同时我在/usr/include/中没有找到iostream.h,在/usr/lib/中也没有找到相关的.so或者.a文件,是不是我的环境中缺少什么文件?请多指教!谢谢。
ly_chaojilong 于 2009-09-07 12:56:47发表:
谢谢icejoywoo,我按您提供的代码
修改为:
#include
int main ()
{
cout << "Hello, world!" << endl;
return 0;
}
但是仍然提示:
[liyang@LYLinux HeloWord]$ g++ -c hello.C -Wno-deprecated
hello.C: In function ‘int main()’:
hello.C:4: error: ‘cout’ was not declared in this scope
hello.C:4: error: ‘endl’ was not declared in this scope
icejoywoo 于 2009-09-07 12:41:16发表:
[i=s] 本帖最后由 icejoywoo 于 2009-9-7 12:42 编辑 [/i]
头文件错了
c++的头文件是
#include
我看搂主需要看基础知识了,c和c++的基础
ly_chaojilong 于 2009-09-07 11:34:59发表:
谢谢alick:
我刚才测试了以下,发现使用c编写的简单测试能通过,而用C++编写的简单测试就不能通过哦。
c测试代码:
#include
int main()
{
printf("Hello, world.No Chines.\n");
}
C++测试代码:
include
int main (int argc,char**argv)
{
cout << "Hello, world!" << endl;
return 0;
}
结果在C++编译时:
[liyang@LYLinux HeloWord]$ g++ -c hello.C
hello.C: In function ‘int main(int, char**)’:
hello.C:4: error: ‘cout’ was not declared in this scope
hello.C:4: error: ‘endl’ was not declared in this scope
不知道时哪里有了问题,请帮忙看下。谢谢!!
freeice 于 2009-09-07 11:19:48发表:
进来看一下,看能不能帮助。。。
我也有好多问题。。大家去看一下。能不能帮我解决嘛!!!谢谢!!!
有空帮我看一下这个问题。。谢谢。。http://www.linuxdiyf.com/bbs/thread-156948-1-1.html
alick 于 2009-09-07 10:23:29发表:
#include 后面应该有头文件名啊和
我看应该有
也就是说那两行应该是
#include
#include
ly_chaojilong 于 2009-09-07 10:14:15发表:
有没有帮忙的,自己先顶下!