当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 14 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 基础问题 .
帖子发表于 : 2007-09-08 18:41 

注册: 2007-09-07 3:08
帖子: 38
送出感谢: 0 次
接收感谢: 0 次
a.cpp
代码:
#include <iostream>
#include "b.h"

int main()
{
   int i = add(5, 3);
   printf("%d\r\n", i);
   return 0;
}

b.h
代码:
#ifndef B_H
#define B_H

int add(const int a, const int b);
#endif


b.cpp
代码:
#include "b.h"
int add(const int a, const int b)
{
   return a + b;
}


我用gcc -o ~/a ~/a.cpp

提示说没有定义add(int, int)
怎么会事,不好意思这个问题实在太愚蠢了,对于刚刚入门linux编程的习惯了windows下vs的ide环境的人
还是有写不解! :( :( :(


最后由 tiankunmin 编辑于 2007-09-08 19:59,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-09-08 19:13 
头像

注册: 2006-05-03 0:39
帖子: 8273
地址: المريخ
送出感谢: 0 次
接收感谢: 1
b.h写错了


_________________
PHP是最好的语言!不服来战!


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-09-08 19:13 
头像

注册: 2006-05-03 0:39
帖子: 8273
地址: المريخ
送出感谢: 0 次
接收感谢: 1
a.cpp也错了


_________________
PHP是最好的语言!不服来战!


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-09-08 19:14 
头像

注册: 2006-05-03 0:39
帖子: 8273
地址: المريخ
送出感谢: 0 次
接收感谢: 1
编译时用的命令也错了


_________________
PHP是最好的语言!不服来战!


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-09-08 19:15 
头像

注册: 2006-05-03 0:39
帖子: 8273
地址: المريخ
送出感谢: 0 次
接收感谢: 1
引用:
怎么会事,不好意思这个问题实在太愚蠢了,对于刚刚入门linux编程的习惯了windows下vs的ide环境的人

先自己检查一下程序,你的这个程序在vs中同样编译不过的


_________________
PHP是最好的语言!不服来战!


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-09-08 19:26 
头像

注册: 2006-05-03 0:39
帖子: 8273
地址: المريخ
送出感谢: 0 次
接收感谢: 1
改好的见附件


附件:
tiankunmin_problem.tar.gz [4.69 KiB]
被下载 21 次


_________________
PHP是最好的语言!不服来战!
页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-09-08 20:03 

注册: 2007-09-07 3:08
帖子: 38
送出感谢: 0 次
接收感谢: 0 次
谢谢stlxv
不过我还是有些不解.
我怎么都没看出我哪里写错了在 a.cpp 和b.h 你的附件我 用
b.h中的#infndef 写错了那是抄上来的时候抄错的,源程序里没错.刚才我编辑了下
把#infndef改成了#ifndef
g++ -o ~/Desktop/tiankunmin_problem/a ~/Desktop/tiankunmin_problem/a.cpp 也编译不了提示同样的错误

看来是这句g++编译语句用问题.请问怎么不使用makefile该如何写这个编译语句.


最后由 tiankunmin 编辑于 2007-09-09 0:15,总共编辑了 1 次

页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-09-08 20:29 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
g++ -o ~/Desktop/tiankunmin_problem/a ~/Desktop/tiankunmin_problem/a.cpp ~/Desktop/tiankunmin_problem/b.cpp


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-09-08 20:32 

注册: 2007-09-07 3:08
帖子: 38
送出感谢: 0 次
接收感谢: 0 次
发现把#include "b.h"改成#include "b.cpp"就行了.
我这样理解不知道对不对,g++不会根据b.h去找b.cpp
但是b.cpp 包含了 b.h 所以#include "b.cpp"即可
在你给的makefile中也是用b.cpp而不是b.h
难道linux没有文件后缀的概念?


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2007-09-08 21:16 

注册: 2007-09-07 3:08
帖子: 38
送出感谢: 0 次
接收感谢: 0 次
BigSnake.NET 写道:
g++ -o ~/Desktop/tiankunmin_problem/a ~/Desktop/tiankunmin_problem/a.cpp ~/Desktop/tiankunmin_problem/b.cpp


谢谢8楼的大哥,不过这也太恐怖了 我 还是写makefile吧 :shock:


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2007-09-09 0:25 
头像

注册: 2006-05-03 0:39
帖子: 8273
地址: المريخ
送出感谢: 0 次
接收感谢: 1
关于编译:
你直接执行
代码:
make
就知道怎样的编译命令才是对的。
不过执行之前最好先执行
代码:
make clean


_________________
PHP是最好的语言!不服来战!


最后由 stlxv 编辑于 2007-09-09 0:34,总共编辑了 1 次

页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2007-09-09 0:32 
头像

注册: 2006-05-03 0:39
帖子: 8273
地址: المريخ
送出感谢: 0 次
接收感谢: 1
tiankunmin 写道:
发现把#include "b.h"改成#include "b.cpp"就行了.
我这样理解不知道对不对,g++不会根据b.h去找b.cpp
但是b.cpp 包含了 b.h 所以#include "b.cpp"即可
在你给的makefile中也是用b.cpp而不是b.h
难道linux没有文件后缀的概念?

b.h改成b.cpp意义就完全变了。
g++当然不会根据b.h去找b.cpp,而且任何c++编译器都不会这么做,除非你在源代码中包含了b.cpp。#include的作用只是仅仅把文件内容包含进当前文件而已。你的b.h作用只在于告诉编译器有那个用来做加法的函数。当a.cpp和b.cpp都分别编译完成之后,再进行连接成可执行文件a。
linux没有扩展名的概念,但是后缀和扩展名不是同样一个概念。你重新执行一下make clean all,看看我的编译过程是怎样的:先单独编译a.cpp和b.cpp,然后再把编译好的两个文件连接起来成最终的可执行文件(任何其他正统的c++编译器都是这么做的)。
你的程序还有另外的问题,你包含了iostream,但是你没用到,当然这不算错误;你使用了printf,却没有包含stdio.h,那么你这时使用的printf是编译器内嵌的printf函数,而不是正规的printf函数了。


_________________
PHP是最好的语言!不服来战!


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2007-09-09 2:06 

注册: 2007-09-07 3:08
帖子: 38
送出感谢: 0 次
接收感谢: 0 次
哦 恍然大悟 多谢 stlxv!


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2007-09-09 12:02 
头像

注册: 2006-05-03 0:39
帖子: 8273
地址: المريخ
送出感谢: 0 次
接收感谢: 1
不客气


_________________
PHP是最好的语言!不服来战!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 14 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译