打印

这样做是不是已经将“Delay.c”文件加入了工程??

[复制链接]
2352|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
不知道这样做是不是已经将“Delay.c”文件加入了工程:

1、在桌面上“新建文件夹”
2、将文件“test.c”、“Delay.c”、“Delay.h”拷贝到“新建文件夹”
3、在“新建文件夹”中新建工程“test”,生成文件“test.eww“
4、此时“新建文件夹”中包含有“test.eww“、“test.c”、“Delay.c”、“Delay.h”和一些其他的文件

不知道以上4步是不是已经将“Delay.c”文件加入了工程


“test.c”、“Delay.c”、“Delay.h”文件内容如下:
===========================================
“test.c”内容:

//程序功能:实现流水灯"流动"
//硬件电路:P2口接LED,低电平点亮

#include  <msp430x16x.h> //包含头文件
#include  "Delay.h"             //包含自己的延时头文件
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;   // 关闭看门狗
  
  P2SEL = 0;               //设置P2口为I/O端口功能  
  P2DIR = 0xff;           //设置P2口为输出状态;
   
  while(1)
  {
     char j=0xFE,i;
     for(i=0;i<8;i++)
        {
           P2OUT=j;
           j=j<<1|1;
           Delay(3000);      
         }
    P2OUT=0xff;
    Delay(3000);
  }
}

==================
“Delay.h”内容:

#ifndef Delay_H
#define Delay_H

#include  <msp430x16x.h>
extern void Delay(int n);

#endif

==================
“Delay.c”内容:

#include  <msp430x16x.h>
#include  "Delay.h"

void Delay(int n)
{
        int i,j;
        for(i=0;i<n;i++)
                for(j=0;j<100;j++);
}

问题是编译时出现如下提示,无法通过编译:
Error[e46]: Undefined external "Delay" referred in test ( C:\Documents and Settings\Administrator\桌面\新建文件夹\Debug\Obj\test.r43 )


在“test.c”文件中加入#include  "Delay.c" 语句即可通过编译,为什么必须要加入这条语句呢?????

相关帖子

沙发
minDragon| | 2013-8-9 23:03 | 只看该作者
在工程项目里面有添加Delay.c进去吗?不是文件夹~是项目文件里~
我写的都是没有加入过#include  "XXXX.c"这样的~

使用特权

评论回复
板凳
fe07fe| | 2013-8-10 07:12 | 只看该作者
“Delay.h”内容:

#ifndef Delay_H
#define Delay_H     //这句没试过不会玩

#include  <msp430x16x.h>
extern void Delay(int n);  //这句我不太懂extern,import,一般用在汇编里面的

#endif

工程项目里面有添加Delay.c  工程里还的加入路径 我用的是keil 一般就这样,好久没玩了。

使用特权

评论回复
地板
NE5532| | 2013-8-10 08:10 | 只看该作者
include方式,是以“读入”的方式插入另一个文件,跟你把另一个文件考过来是一样的。C编译器支持多个.c文件同时编译以后由linker来连接,这样做的时候不是通过include进来,而是通过把.c文件加进工程(和main.c)加在一起,然后通过.h文件做extern声明实现的。楼主想要的应该是后一种。include虽然可以弄进来,但是失去了多文件编译的好处。

使用特权

评论回复
5
xuwulian| | 2013-8-10 23:11 | 只看该作者
eww工程师IAR IDE吧,没添加delay.c文件,include引用了这个文件,应该在工程配置里天剑delay.c一般不include c文件的

使用特权

评论回复
6
doublers|  楼主 | 2013-8-11 15:38 | 只看该作者
minDragon 发表于 2013-8-9 23:03
在工程项目里面有添加Delay.c进去吗?不是文件夹~是项目文件里~
我写的都是没有加入过#include  "XXXX.c"这 ...

如何在工程项目里面有添加Delay.c进去?是不是#include  "Delay.c"?

使用特权

评论回复
7
xyz549040622| | 2013-8-12 07:06 | 只看该作者


使用特权

评论回复
8
minDragon| | 2013-8-12 12:20 | 只看该作者
doublers 发表于 2013-8-11 15:38
如何在工程项目里面有添加Delay.c进去?是不是#include  "Delay.c"?

版主已经给出方法~
#inlude的语句,只是实现拷贝的功能。
你现在需要添加的是C文件~

使用特权

评论回复
9
星辰yyt| | 2013-8-12 12:52 | 只看该作者
其实很少有人会用#include  "Delay.c",包含的话一般都是包含头文件
.c文件的添加方法不同的编译器会有细微的差别的,但是大体都是一样的:
打开软件,将鼠标放到你需要添加的地方(工程名或某文件夹),点击右键,一般都会有一个Add Files选项,直接将你需要的文件添加进去就OK了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

37

帖子

0

粉丝