0
當我執行這個程序,一秒鐘指示燈閃爍,然後2秒,然後循環:使用MPLAB在C語言中聲明全局變量和局部變量有什麼區別?
#include <htc.h>
#include <pic16f877.h>
#define _XTAL_FREQ 4e6
int count;
int check(int count);
void main(void){
count = 0;
TRISD = 0xBF;
count=check(count);
count=check(count);
}
int check(count){
if(count == 0){
/* blink an led for 1s */
++count;
}else if(count == 1){
/* blink an led for 2s */
++count;
}
}
但是,當我執行這個程序,兩件事情發生:
如果我執行這個程序在我執行完前一個之後,指示燈閃爍1s,然後2s熄滅。
如果我在任何其他時間執行此程序,一旦它不是在前一個之後,led指示燈熄滅;甚至不眨眼。
#include <htc.h> #include <pic16f877.h> #define _XTAL_FREQ 4e6 int check(int count); int count = 0; void main(void){ TRISD = 0xBF; count=check(count); count=check(count); } int check(count){ if(count == 0){ /* blink an led for 1s */ ++count; }else if(count == 1){ /* blink an led for 2s */ ++count; } }
所以我想知道這是什麼行爲與我在當地宣佈我的變量VS全球範圍內的事情。
編譯時啓用警告。在'check()'裏面,變量'count'不是全局變量:它是一個從參數列表中產生的局部變量。 – pmg 2015-02-08 18:17:28
int check(int count);'缺少返回語句'return count;' – francis 2015-02-08 19:46:31
行:'int check(count){'應該是'int check(int count){',並且pmg has注意到,在該參數中傳遞的「count」與程序頂部聲明的全局「count」不同。 (順便說一下,它會降低可讀性,並提供非常有效的混淆因素)建議將函數參數從'count'改爲'c'或'ct'。除了「count」之外的任何東西。 – ryyker 2015-02-08 20:00:20