私はこの質問が以前に尋ねられたことを知っています。それはGoogleやこのサイトにもありますが、人々がそれを説明しても理解できません. 私は理解するのにあまりにも多くの時間を費やしてきましたが、まだ理解できていません。私が理解していない基本的なことがあるということを理解してください...さあ、始めましょう。
Proteus で C でプログラミングしていると、しばしば警告やエラー (この場合は警告) が表示されます。
makes pointer from integer without a cast
そして、私はそれを理解していません。私が言ったように、私はすでにそれを調べるのに何時間も費やしてきました. 誰か普通の人らしく説明してください。
また、私はこれをたくさん手に入れます。キャストなしで他のタイプの変数からこの警告を受け取ることは可能でしょうか? キャラクター?この問題を今すぐ修正し、将来的に回避するにはどうすればよいですか?
これが文脈です...
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include "stdlib.h"
#include "USART.h"
#include "I2C.h"
#include "ds1307.h"
void Wait()
{
uint8_t i;
for(i=0;i<20;i++)
_delay_loop_2(0);
}
uint8_t ss,mm,hh,dd,nn,yy,x; // Appropriately labeled variables
uint16_t sec[3],min[3],hr[3],day[3],month[3],year[3],mode[2];
uint16_t secs,mins,hrs,days,months,years,modes;
int main(void)
{
_delay_ms(50);
USART_interrupt_init(); //
USART_send('\r'); // Send carriage return
_delay_ms(100); // Allows for the LCD module to initialize
I2CInit(); // Initialize i2c Bus
DS1307Write(0x07,0x10); // Blink output at 1Hz
while(1)
{
int i=0;
/* SECONDS */
DS1307Read(0x00,&ss); // Read seconds address
/* MINUTES */
DS1307Read(0x01,&mm); // Read minutes address
/* HOURS */
DS1307Read(0x02,&hh); // Read hours address
/* DAY */
DS1307Read(0x04,&dd); // Read hours address
/* MONTH */
DS1307Read(0x05,&nn); // Read hours address
/* YEAR */
DS1307Read(0x06,&yy); // Read hours address
for(i=0;i<5;i++)
{Wait();i++;}
sec[0]=(0b00001111 & ss);
sec[1]=((0b01110000 & ss)>>4);
sec[2]='\0';
itoa(sec[0],secs,10);
USART_putstring(secs); // place string in buffer
そして2つのエラー:
../main.c:59: warning: passing argument 2 of 'itoa' makes pointer from integer without a cast
../main.c:62: warning: passing argument 1 of 'USART_putstring' makes pointer from integer without a cast