问个很基础的问题

软件和网站开发以及相关技术探讨
回复
newfolder
帖子: 3
注册时间: 2007-11-01 8:21

问个很基础的问题

#1

帖子 newfolder » 2007-11-02 6:50

写了一个c++的程序,有四个文件, 1.cpp, 2.h, 3.cpp, 4.txt;

main函数放在1.cpp中, 2.h是头文件. 3.cpp定义了main中用到的类和函数, 4.txt是infile中要用到的文件,就是简单的读一行字符串.

在vc2005(windows xp)下能正常的编译执行.

我把他们都copy到ubuntu系统下面

g++ -o blank 1.cpp

提示: undefined reference to ' .... '
看上去应该是在2.h和3.cpp定义的东西没有进来.

我又尝试了

g++ -o blank 1.cpp 2.h 3.cpp

编译成功,有一个warning: no newline at end of file. (文件结尾应该空一行?)

想问的是, 如果编译时候要用到多个文件都要写在参数上啊? 有什么规则吗? 呵呵,多谢啦.



无论是linux还是c++,我都还是个新手,所以大家别见笑哈
newfolder
帖子: 3
注册时间: 2007-11-01 8:21

#2

帖子 newfolder » 2007-11-02 6:58

试了一下,确实需要一个新的空白行在文件末尾, 不过, why?
头像
windwiny
帖子: 2254
注册时间: 2007-03-13 17:26

#3

帖子 windwiny » 2007-11-02 10:53

就是一个警告了
dbzhang800
帖子: 3182
注册时间: 2006-03-10 15:10
来自: xi'an China
联系:

Re: 问个很基础的问题

#4

帖子 dbzhang800 » 2007-11-02 11:40

newfolder 写了:
编译成功,有一个warning: no newline at end of file. (文件结尾应该空一行?)

想问的是, 如果编译时候要用到多个文件都要写在参数上啊? 有什么规则吗? 呵呵,多谢啦.


论是linux还是c++,我都还是个新手,所以大家别见笑哈
1.应该空一行

2.编译的时候不需要都写上,比如

代码: 全选

g++  -c  1.cpp
g++  -c  3.cpp
但链接的时候当然都需要了(头文件没必要把),所以你编译链接写在一块时肯定需要(头文件不要)

3.多个文件的时候,win下都是建的工程,lin最好用make
prauge
帖子: 30
注册时间: 2007-03-11 12:29

#5

帖子 prauge » 2007-11-02 12:41

LZ你出现的那个错误是在main函数调用子函数时 找不到相应的函数体 在vc的工程中你把3.cpp包含进去了 ,在g++时你只g++ 1.cpp 你可以 g++ *.cpp 。

我很同意4楼的 说法 在linux下大的工程最好用make
newfolder
帖子: 3
注册时间: 2007-11-01 8:21

#6

帖子 newfolder » 2007-11-05 11:07

谢谢楼上, 让我先去研究研究make呵呵. thx a lot~
回复