台灣最大程式設計社群網站
線上人數
2029
 
會員總數:245979
討論主題:189557
歡迎您免費加入會員
討論區列表 >> C/C++ >> 錯誤碼 找不到問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
錯誤碼 找不到問題
價值 : 80 QP  點閱數:619 回應數:1
樓主

johnny
門外漢
0 2
38 0
發送站內信

我使用的編譯器 JRE.Processing

以下是我原本的code

#define F_CPU 16000000UL //16mhz
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include "TouchScreen.h"
#include "TFT.h"
#include "config.h"
#include "twicam.h"
#include "camregdef.h"
#include "gammaedit.h"
#include "selections.h"
void menu(void);
//OV7670 undocumented register 1F is called LAEC this means exposures less than one line
#ifdef haveSDcard
#include "ff.h" /* Declarations of FatFs API */
#include "mmc.h"
//volatile uint16_t Timer; /* Performance timer (100Hz increment) */

/*---------------------------------------------------------*/
/* 100Hz timer interrupt generated by OC2 */
/*---------------------------------------------------------*/


ISR(TIMER2_COMPA_vect){
//PORTG|=1<<5;
//++Timer; /* Performance counter for this module */
disk_timerproc(); /* Drive timer procedure of low level disk I/O module */
//PORTG&=~(1<<5);
}
/*---------------------------------------------------------*/
/* User Provided Timer Function for FatFs module */
/*---------------------------------------------------------*/
/* This is a real time clock service to be called from */
/* FatFs module. Any valid time must be returned even if */
/* the system does not support a real time clock. */
/* This is not required in read-only configuration. */


uint32_t get_fattime(void){
/*RTC rtc;
if (!RtcOk) return 0;
// Get local time
rtc_gettime(&rtc);*/

/* Pack date and time into a DWORD variable */
return ((uint32_t)(2013 - 1980) << 25)
| ((uint32_t)10 << 21)
| ((uint32_t)27 << 16)
| ((uint32_t)11 << 11)
| ((uint32_t)0 << 5)
| ((uint32_t)0 >> 1);
}
#endif
void main(void){
DDRL|=8;
ASSR &= (uint8_t)~(_BV(EXCLK) | _BV(AS2));
//generate 8mhz clock
TCCR5A=67;
TCCR5B=17;
DDRC=0;//set ov7670 pins to input
#ifdef MT9D111
OCR5A=2;//Formula for output clock is F_CPU/(2(x+1))
#else
OCR5A=0;
#endif
DDRC=0;
DDRG|=1<<5;
UBRR0H=0;
UCSR0A|=2;//double speed aysnc
UBRR0L=3;//0 = 2m 1= 1m 3 = 0.5M 2M baud rate = 0 7 = 250k 207 is 9600 baud rate
UCSR0B = (1<<RXEN0)|(1<<TXEN0);//Enable receiver and transmitter
UCSR0C=6;//async 1 stop bit 8bit char no parity bits
ADCSRA=(1<<ADEN)|(1<<ADPS2);//enable ADC
uint8_t error;
tft_init();//init TFT library
tft_setDisplayDirect(DOWN2UP);
#ifdef haveSDcard
OCR2A = 155;//F_CPU / 1024 / 100 - 1;
TCCR2A=2;//CTC mode
TCCR2B=7;//F_CPU/1024
TIMSK2 |= (1<<OCIE2A);
disk_timerproc();
#endif
sei();
TWSR&=(uint8_t)~3;//disable prescaler for TWI
TWBR=72;//set to 100khz
#ifdef ov7670
configSel();
#else
initCam();
#endif
//try writing to sd card
#ifdef haveSDcard
tft_drawStringP(PSTR("About to initialize"),24,320,1,WHITE);
//UINT bw;
disk_initialize(0);
tft_drawStringP(PSTR("Initialized"),32,320,1,WHITE);
f_mount(&FatFs, "0:", 0); /* Give a work area to the default drive */
tft_drawStringP(PSTR("Mounted"),40,320,1,WHITE);
#endif
menu();
}





錯誤碼為
sketch_may19c.ino:18:15: error: '::main' must return 'int'
sketch_may19c.ino:58:15: error: '::main' must return 'int'
sketch_may19c.ino: In function 'int main()':
sketch_may19c.ino:92:13: error: 'configSel' was not declared in this scope
編譯時發生錯誤


請問要怎麼修改呢?




搜尋相關Tags的文章: [ 錯誤碼 ] , [ ] ,
本篇文章發表於2016-05-19 20:32
1樓
最有價值解答

Raymond
檢舉此回應
>error: '::main' must return 'int'

告訴你 main() 應該傳回 int. 指的就是你程式裡第58 行的 main() 函式:

正確的用法是:

C 及 C++ 語言的 main() 的回傳類型必須也只能是 int. 這是語言標準的規定. 任何其它類型的回傳值, 或 void 都是不符合標準的, 錯誤的寫法.

至於另一個錯誤:
>error: 'configSel' was not declared in this scope
指的是第 92 行的函式呼叫: configSel().
在 C 及 C++ 語言裡, 任何函式在使用也就是呼叫前, 編譯器必須先看到它們的宣告或定義, 以做錯誤檢測: 錯誤檢測包括參數的使用及其類型, 函式的回傳類型. 這也是程式一開始各頭檔的主要內容.

所以你必須在呼叫任何函式前, 在最外層預先宣告或定義你打算呼叫的函式. 第 16 行的:

如果 configSel() 是你自己寫的函式, 你可以把這個函式的宣告加入在 menu() 宣告的後面, 或是在跟這個函式定義相關的頭檔裡. 如果 configSel() 是特殊第三者函式庫裡的函式, 那你要去看相關的說明, 把有這個函式宣告的頭檔加 #include 到你的程式裡.

本篇文章回覆於2016-05-20 03:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.