久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13501|回復: 8
打印 上一主題 下一主題
收起左側

ERROR L104: MULTIPLE PUBLIC DEFINITIONS不知道哪里錯了 求大神幫忙

[復制鏈接]
跳轉到指定樓層
樓主
ID:253678 發表于 2017-11-28 21:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <stc15f2k60s2.h>
#include <intrins.h>
#define LED P2
sbit k1=P1^6;
sbit L1=P4^4;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,
                            0x66,0x6d,0x7d,0x07,
                            0x7f,0x6f,0x77,0x7c,
                            0x39,0x5e,0x79,0x71};
unsigned char a,b;
void Delay100ms()  //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 5;
j = 52;
k = 195;
do
{
  do
  {
   while (--k);
  } while (--j);
} while (--i);
}
void Delay100us()  //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
i = 2;
j = 15;
do
{
  while (--j);
} while (--i);
}
              
void main()
{
L1=0;
while(1)
{
  if(k1==0)
  {
   Delay100us();
  }
  if(k1==0)
  {
  
   
    LED=table[a];
    a++;
    Delay100ms();
    if(a==16)
    {
     a=0;
    }
   while((k1==0)&&(b<50))
   {
     Delay100ms();
    b++;
   }
   b=0;
}
}
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:253678 發表于 2017-11-28 21:12 | 只看該作者
Rebuild target 'Target 1'
compiling 123.c...
compiling 456.c...
linking...
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:  TABLE
    MODULE:  .\Objects\456.obj (456)
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:  MAIN
    MODULE:  .\Objects\456.obj (456)
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?MAIN?456
Program Size: data=11.0 xdata=0 code=167
Target not created.
Build Time Elapsed:  00:00:01
回復

使用道具 舉報

板凳
ID:90663 發表于 2017-11-28 22:05 | 只看該作者
親測,程序的語法是沒有問題的,你的輸出日志顯示有兩個C文件建議你看一下項目的建立是否正確。如果可以的話請說明一下你使用的編譯環境
回復

使用道具 舉報

地板
ID:213173 發表于 2017-11-28 23:03 | 只看該作者
nibabazaizhe 發表于 2017-11-28 21:12
Rebuild target 'Target 1'
compiling 123.c...
compiling 456.c...

可能是你的這個工程文件里加載有其它無關的C文件,我新建一個工程文件,只把這個程序內容復制。編譯是正常的。

評分

參與人數 1黑幣 +5 收起 理由
nibabazaizhe + 5

查看全部評分

回復

使用道具 舉報

5#
ID:222948 發表于 2017-11-28 23:23 | 只看該作者
沒錯的話現在編譯的是456.c,你現在把123.c文件刪掉就可以了

評分

參與人數 1黑幣 +5 收起 理由
nibabazaizhe + 5

查看全部評分

回復

使用道具 舉報

6#
ID:253678 發表于 2017-11-29 06:17 | 只看該作者
999333 發表于 2017-11-28 23:23
沒錯的話現在編譯的是456.c,你現在把123.c文件刪掉就可以了

一個工程中不可以建兩個嗎  一個123.c一個456.c
回復

使用道具 舉報

7#
ID:164602 發表于 2017-11-29 09:02 | 只看該作者
nibabazaizhe 發表于 2017-11-29 06:17
一個工程中不可以建兩個嗎  一個123.c一個456.c

一個工程可以有多個C文件。
但:只能有一個main()函數哦!!!!!

評分

參與人數 1黑幣 +5 收起 理由
nibabazaizhe + 5

查看全部評分

回復

使用道具 舉報

8#
ID:81444 發表于 2018-4-28 16:03 | 只看該作者
c/c++語言中有很多地方要用到extern,但是如果沒有真正的了解它的意義,會給編程帶來很大的麻煩,為了使大家少走彎路,特祥細的說明一下。
      對于比較小的程序,一般只有一個c文件和一個頭文件,全局變量我們通常會直接定義在c文件中,在程序之前加int i定義。如果要在頭文件中定義有以下兩種方法:用extern來聲明:extern int i;這一句只是對變量i進行聲明,在c文件的程序之前必須加上int i進行定義。extern int i=0;這一句聲明和定義都做了。
    對于大一點的程序,有很多c文件和頭文件,這個時候全局變量就必須在頭文件中聲明(不需要初始化),然后在一個c文件中定義(該初始化的要初始化)。如果在頭文件中定義,則編譯的時候會出現重復定義的錯誤。如果只有頭文件中聲明就會出現沒有定義有警告。
   *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
       SYMBOL: K
       MODULE: 222.obj (222)
出現上述錯誤則是因為變量k重復定義,把你的頭文件中的變量定義前加extern(只是變量聲明不用初始化),再在某一個你要調用該變量的c文件的程序之前再定義(注意第一個調用的c文件要負責附帶初始化該變量,其他調用的c文件就不需要初始化過程啦)
回復

使用道具 舉報

9#
ID:431699 發表于 2019-1-4 08:41 | 只看該作者
liyuanchengx 發表于 2018-4-28 16:03
c/c++語言中有很多地方要用到extern,但是如果沒有真正的了解它的意義,會給編程帶來很大的麻煩,為了使大 ...

可是在222.c中并沒有定義變量K還顯示這個錯誤是怎么回事呢
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人免费视频在线观看 | 久久综合狠狠综合久久 | 亚洲 精品 综合 精品 自拍 | www久久久| 国产亚洲成av人在线观看导航 | 成人一区二区三区视频 | 欧美在线一区二区三区 | 欧美一区不卡 | 欧美激情亚洲激情 | 情侣av| 午夜综合 | 精精国产xxxx视频在线 | 久久久久国产精品午夜一区 | 精品欧美色视频网站在线观看 | 欧美在线亚洲 | 久久精品国产久精国产 | 亚洲日日操 | h在线看 | 五月综合激情在线 | 精品一区二区av | aaaaaa大片免费看最大的 | 国产一级在线 | 色爱综合网 | 一区二区国产在线观看 | 国产日韩精品久久 | 欧美日韩亚洲系列 | 男女羞羞的网站 | 午夜久久久久久久久久一区二区 | 亚洲男人的天堂网站 | 91精品国模一区二区三区 | 精品国产一区探花在线观看 | 久久一区二区三区四区 | av国产在线观看 | 狠狠操电影 | 久久久五月天 | 成人国产精品久久久 | 亚洲天堂精品久久 | 东京av男人的天堂 | 日美女逼逼 | 国产成人网 | 国产精品高潮呻吟久久久久 |