Newsgroup: it.comp.lang.c
Titolo: perchè warning?

Ragazzi ecco il problema. 
Io dichiaro un puntatore a delle matrici
unsigned short int(*grey)[8][8];
Dopo gli alloco la memoria
grey=(unsigned short int *)malloc(sizeof(int )*hsize*vsize*3);
ed il compilatore (un lcc9 mi da il seguente warning
assignment of pointer to array 8,8 of unsigned short to pointer to
unsigned short;
Inoltre se io chiamo una funzione,
ad esempio la funzione rotate180((*grey))
mi rida' lo stesso tipo di warning.
Fatemi è per una tesina sulla elaborazione delle immagini
thank you Flinstone
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

grey=(unsigned short int *)malloc(sizeof(int )*hsize*vsize*3);
scrivere grey equivale a scrivere &grey[0][0], inoltre il tipo che hai
messo nella chiamata del sizeof non coincide con il tipo di dato di
grey. Non so se questa particolarità abbia qualche utilità nel tuo
sorgente, ma nel dubbio te lo segnalo.
Forse dovresti scrivere piuttosto
grey[i][j] = malloc(sizeof(unsigned short int)*hsize*vsize*3);
[curiosità mode ON]
Come mai ti servono 3 unsigned short int?
Per le componenti rgb di ciascun pixel?
[curiosità mode OFF]
Spero di non aver capito male ciò che hai detto. ;-)

Come mai ti servono 3 unsigned short int?
Sorry... unsigned short int l'avevo messo io... ;-)
Volevo dire 3 byte per pixel. :-)

mi rida' lo stesso tipo di warning.
Che parametro accetta "rotate180" ? Se scrivi
    void rotate180(unsigned short x[][8]))
allora non ci sono problemi... se invece usi
    void rotate180(unsigned short *x)
allora *grey non e' compatibile... se vuoi passare
l'indirizzo del primo elemento della prima matrice
puntata da grey devi usare
    rotate180(&(*grey)[0][0]);
HTH
Andrea

scrivere grey equivale a scrivere &grey[0][0], inoltre il tipo che hai
Falso (indipendentemente da quali driver di rete
hai installato).
La confusione che regna nella tua testa e'
impressionante, e terrificante in considerazione
della tua notevole repulsione verso i buoni consigli.
Nonostante questo eccone un paio di nuovi:
- rileggere il capitolo su array e puntatori...
  e continuare a rileggerlo sino a che non si
  e' capito per davvero.
- verificare prima di scrivere su un newsgroup
  su cose su cui si hanno le idee confuse.
  Scrivendo cretinate non fai altro che confondere
  le idee agli altri e a te stesso.
Andrea

>grey=(unsigned short int *)malloc(sizeof(int )*hsize*vsize*3);
Suppongo che le matrici da allocare siano 3, per cui devi
scrivere:
grey = malloc(3 * sizeof *grey);
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

  le idee agli altri e a te stesso.
La tua risposta è cafona.
Ho faticato a risponderti senza l'epiteto che ti saresti meritato.

hai installato).
ROTFL :)


Ho faticato a risponderti senza l'epiteto che ti saresti meritato.
Potevi anche non rispondere, sicuramente sarebbe stato
meglio.  Dimmi tu che epiteto avremmo dovuto, invece,
trovare noi, per le tue risposte in un thread appena
trascorso:
"Stai parlando a vanvera."
"Ne ho le palle davvero piene."
"Madonna come la fate lunga! Trovatevi una ragazza!"
"No... era lui, ma evidentemente è più comodo dimenticare, e
sostenere che debba essere per forza un errore altrui."
57 messaggi per capire che avevi fatto una stronzata.
Complimenti.


Complimenti.
Osservare che ho chiesto pubblicamente scusa per l'errore non vale
nulla per te?
Ho cercato di fare dell'ironia. Ma a quanto pare mi si č incollata
addosso un'etichetta definitiva :-/ .
Mi spiace per aver commesso un altro errore. Mi sembrava un quesito
elementare, ma mi sono sfuggite un paio di vitali parentesi.
Ti saluto e mi ritiro a conferire con Otelma.
P.s.: risparmiati di dirmi di riflettere piů a lungo prima di postare,
l'ho imparato benissimo (vedi risposta alla tua frase iniziale).

Ragazzi ecco il problema. 
Scusami per la risposta fuorviante.
Il 33.3 % delle risposte corrette è leggermante lontana dal 100%...
Ti saluto e mi rimetto a studiare. ;-)

La boiata era mia, ma le vostre risposte potevano avere un altro tono.
Difficile, quando cerchi di far bere agli altri il contrario
della realta'.  Cerca di convincere qualcuno, domattina, che
il sole che si vede e' verde e che ti sei accertato che e'
cosi', se non vuole ammetterlo e' colpa sua, perche' sta
negando l'evidenza ecc... ecc... vediamo come ti tratta...


Ho faticato a risponderti senza l'epiteto che ti saresti meritato.
A parte la frecciatina non capisco cosa ci vedi di
cosi' cafone. Tu hai "ciccato" clamorosamente la
comprensione di cosa significa "int (*grey)[8][8]"
e hai detto una cretinata sull'equivalenza di
"grey" e "&grey[0][0]".
A me pare chiaro che tu abbia idee abbastanza confuse
sulle dichiarazioni complesse in C e su array/puntatori.
Doppiamente grave il fatto che il messaggio verteva
proprio su cosa significassero quelle dichiarazioni e
perche' il compilatore si lamentava di incompatibilita'
dei tipi (questo avrebbe dovuto farti riflettere).
Quindi sull'ignoranza delle regole del C non credo ci
possano essere dubbi genuini. E ti prego di non dirmi
che hai passato l'esame di programmazione... i problemi
dell'universita' italiana non sono argomento pertinente
in it.comp.lang.c.
La parte relativa al "terrificante" e' invece dovuta
alla tua saccenza... che porta a difendere e diffondere
tanta non-conoscenza che affolla il tuo cervello.
Quella saccenza (unita alla ignoranza) faranno grandi
danni se non intervieni subito, con umilta' e con studio.
Io avevo iniziato a rispondere al tuo lungo post
dell'altro thread... mi sono pero' fermato di fronte a
cose come la discussione su cosa significa UFO
(contestazione risibile... come dire che i marziani
vengono per forza da marte) o come lo spostare la
discussione sui tamburi fingendo di non capire il
problema di fondo (se A e' capitato dopo B non e'
detto che B provochi A).
Ho deciso di non completare il messaggio perche' l'unica
frase conclusiva sensata sarebbe stata "sei solo un pirla".
Andrea

frase conclusiva sensata sarebbe stata "sei solo un pirla".
Ho avuto la stessa tentazione. Fortunatamente ci siamo trattenuti
entrambi.

entrambi.
Scusate se mi intrometto, ma questo atteggiamento da'
veramente fastidio.  Non capisco in base a cosa tu possa
accusare gli altri di essere dei "pirla".
Purtroppo, considerando cio' che hai affermato e le tue
reazioni nei thread passati, l'approccio nella lettura dei
messaggi che scrivi e' leggermente segnato.  Non si puo'
leggere un tuo messaggio, senza pensare che quanto stai
scrivendo sia una fesseria.  
Lo stai confermando in tutti i messaggi che scrivi.
Astieniti, te lo chiedo come favore personale e poi, per
cortesia, non scrivermi per posta elettronica, se non
esplicitamente richiesto.


esplicitamente richiesto.
D'accordo, non pensavo che tu potessi trovarlo fastidioso, sorry.
Mi è rimasta una vecchia consuetudine Fidonet. In quella rete si
usava, in caso di conflitti in area pubblica, troncare sul nascere
ogni flame, e cercare di calmare gli animi con un chiarimenti in
privato.
Non cercavo nulla di più di questo: mi è sempre dispiaciuto litigare,
persino con persone che ancora conosco poco. Cerco sempre di
migliorare un rapporto, per quanto lontano, e non di ostacolarlo.
Detto questo... se vuoi dirmi altro, preferirei una risposta privata.
Non voglio (né potrei del resto) importi un rapporto epistolare
privato, ma solamente evitare agli altri ulteriori scambi di messaggi
OT.
P.s.: ovviamente lo stesso discorso vale per Andrea Griffini, anche se
naturalmente è libero di scrivere dove e come vuole.

 sizeof(*mat) e' 64, sizeof(*p) e' 1.
Scusa Andrea ma non era piu' congruente fare l'esempio con
l'unsigned short
e dire che sizeof(*mat) =128 cosa ? 128 byte
e sizeof(*p) = 2 byte

 migliorare un rapporto, per quanto lontano, e non di ostacolarlo.
Ma per piacere... tra un po' ci inviterai da Maria De Filippi...
E qui ci metto sto benedetto punto.


E qui ci metto sto benedetto punto.
Meno male che volevo solamente far pace.
Questo era *esattamente* ciò che intendevo evitare.
E scusa ancora se sono andato a scomodare un dio scambiandolo per un
essere umano *mediamente* comprensivo...
E come vedi non mi scomodo più a cercare di riavvicinarmi, tanto mi
hai già dato per spacciato ed irrecuperabile.
A quanto pare il punto l'hai già messo svariati giorni fa.

*PLONK*


*PLONK*
Meglio.

 e sizeof(*p) = 2 byte
In realta` con:
unsigned short (*mat)[8][8];
unsigned short *p;
avresti che  sizeof(*mat) e`  64 *  sizeof(unsigned short)  e similmente
sizeof(*p)  e` sizeof(unsigned  int). Nell'esempio e`  stato usato  come
tipo il  char perche` sizeof(char)  e` 1 per definizione. Per  tutti gli
altri tipi il C fissa solo  una dimensione minima (oltre al solito short
<= int <= long).
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
#include <stdio.h> 
int main(void) {printf("\t\t\b\b\b\b\b\b");
printf("\t\t\b\b\b\b\b\b");return 0;}

 mio messaggio è ora segnato.
Posso darti un consiglio? Lascialo perdere... Tu hai senza alcun dubbio 
sbagliato, sia nei fatti che negli atteggiamenti, ma questo mi pare 
normale... capita alla maggior parte delle persone, anche a La Forgia 
(vedesi il thread sui linguaggi... bastonato pesantemente). La 
differenza tra te e lui sta nel fatto che tu hai ammesso lo sbaglio, lui 
è ancora convinto di aver ragione...
Non preoccuparti, non sei segnato... basta che certi attacchi di 
presunzione non capitino più neanche a te :)
-- 
"Everything is vague to a degree you do not realize till you have tried
  to make it precise"
"Ogni cosa è vaga in una misura di cui non ci si rende conto finché non
  si cerca di renderla precisa"
                                       Bertrand Russell
                                       The Philosophy of Logical Atomism

presunzione non capitino più neanche a te :)
Beh... se tu girassi da queste parti e ne avvertissi i sintomi...
fammelo sapere, e farò un rapido esame di coscienza. ;-) Sul serio.
Io tenterò di fare la mia parte.
L'unica cosa che mi ferisce è che il mio tentativo di
riappacificazione sia stato letteralmente schifato.
Mi aspettavo tutt'al più che ignorasse il mio tentativo, non che mi
aggredisse. Una cosa del genere non mi è mai successa prima.
Grazie, mi hai tirato su il morale.
P.s.:... OT nell'OT... Aros? Ho un Amiga 2000 e un CDTV  in cantina!
  8-) Bei tempi...

   8-) Bei tempi...
Provalo, se non l'hai ancora fatto.


Provalo, se non l'hai ancora fatto.
Mi hai incuriosito... ;-)
Aggancio it.comp.os.amiga, e chiudo l'OT.

 soggetto... ho una mia personale teoria in merito :)
questa mi incuriosisce, cosa c'e' di male nell'utilizzo del killfile?
-- 
Marco

 (vedesi il thread sui linguaggi... bastonato pesantemente). 
AHAHAHA... guarda che chi e' uscito fortemente bastonato e
ha mostrato di avere le idee MOLTO confuse, in quel thread 
sei proprio tu... 


 linguaggio C non fa di lui un grand'uomo
Opinione personale e rispettabile.
Non fa di te un grand'uomo neanche il fatto che tu conosca
poco i sistemi operativi e i linguaggi in general, ma questo
e' un altro discorso.
"Laforgia", comunque, si scrive tutto attaccato.


 questa mi incuriosisce, cosa c'e' di male nell'utilizzo del killfile?
Per usare le sue stesse parole: lascialo perdere.


Ralph Hinkley wrote:

"uccidere" la gente, far finta che non esista, perchè non si è capaci di 
discutervi, non è certo una cosa positiva... Mettere la gente nel 
killfile equicale ad etichettarla, a bannarla dalla propria esistenza... 
un atteggiamento infantile, come quello del bimbo che si tappa le 
orecchie e comincia a balbettare suoni incomprensibili... Se poi chi 
mette la gente nel killfile non perde occasione per denigrarla 
attraverso i messaggi di altre persone, la cosa è davvero patologica.
ICOD è un buon esempio in materia :)
Cmq, qui siamo completamente OT... altri messaggi in proposito nella mia 
m-box, please.


 sei proprio tu... 
Come volevasi dimostrare :) Va bene, La Forgia, va bene... Non conosci 
Chomsky e vuoi venire a parlarci di linguaggi... Ah... certa gente non 
impara mai... :)


 "Laforgia", comunque, si scrive tutto attaccato.
Pof... per me fa lo stesso...


 m-box, please.
Curioso, ora che ho deciso di iniziare una discussione, decreti che il 
gruppo non debba pagarne il fio. :)
-- 
Baci,
Mony

 gruppo non debba pagarne il fio. :)
Le discussioni IT sono ben accette, sono quelle OT che stanno male... tu 
te ne sei fregato, come evidente...


 te ne sei fregato, come evidente...
Ti do` la possibilita` di dimostrare, per una volta, la tua sensibilita` 
alla Netiquette: prova a non rispondermi. ;)
-- 
Baci,
Mony

 alla Netiquette: prova a non rispondermi. ;)
Non devo provarti niete. Se era l'ultima parola che volevi avere, 
tientela. Rispondi pure in pubblico se vuoi, da parte mia non ci saranno 
altri messaggi in questo thread.


 altri messaggi in questo thread.
"Ultima parola". Vediamo un po' che succede... :)
-- 
Baci,
Mony

 è ancora convinto di aver ragione...
Tanto per riaprire una parente.
Guarda che Laforgia non era l'unico a pensare che in quel thread
fossi tu ad avere torto.
Riguardo al NemesisC che hai tirato in ballo gli autori dicono
in "progtut.tex"
In order to (relatively) seamlessly integrate the above features into 
code, a large number of preprocessor macros and C types are provided, 
some of which are auto-generated from MIDDL{} interfaces. 
Hence most Nemesis source 
code looks like a stylised form of C, which we call nemesisC.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
e aggiungono in middl-c-map.tex
MIDDL{} interfaces are processed by a pair of tools called cl
and astgen. The former parses the interfaces (texttt.if files)
 into an abstract syntax tree and outputs texttt.ast files. The
latter reads the texttt.ast files and specifications for output
 formats and generates a \texttt.ih file and a texttt.def.c file.
Questo mi sembra un linguaggio nemmeno parente del C che gli
autori (giustamente) chiamano come gli pare (NemesisC appunto
per una somiglianza della sua sintassi con quella del "C").
Ma quello che si chiama linguaggio C, si chiama linguaggio C su
qualsiasi sistema.
E' tuo diritto pensarla diversamente dagli altri e sbagliare
come ti piace di piu'.
Chiusa la parente.
C:\>iao Angelo


 come ti piace di piu'.
Lo stesso dicasi per te, specialmente riguardo alla seconda parte.


io non ero l'unico a dare torto a lui...
Per la cronaca tu non eri l'unico a dargli contro, come lui non era
l'unico a darti contro... se devi presentare le cose presentale nella
sua completezza.
P.S.  Mony: chi fa 4 non si ferma mai al 5, dovresti saperlo
-- 
Mox

 Certo, solo che non esiste *un solo* linguaggio C.
Io continuo a pensarla diversamente. E continuo a pensare che
stai sbagliando.
C:\>iao Angelo
[1] Per inciso in 
http://nemesis.sourceforge.net/progtutweb/index.html
    dice 
    This chapter is intended as a reference for people programming
    Nemesis in C. It is not an introduction to programming in C.
    ^^^^^^^^^^^^^
    Rather it presents some of the aspects of programming for Nemesis
    which may seem unfamiliar to people used to the Posix or Win-32
    APIs. 
    Non e' che hai estrapolato un po' troppo le parole degli autori?


 sua completezza.
E io che ho scritto?! "Per contro" si riferiva a quello che ha scritto 
Paolitto, e serviva "completarlo".


     Non e' che hai estrapolato un po' troppo le parole degli autori?
No, affatto. L'inglese lo conosco perfettamente e non è mia abitudine 
"estrapolare troppo", mi limito a leggere quello che è scritto.


 che si scannano 5 + o 5 - non cambia la nulla).
Con Alemagna si battibecca anche li :-)


 cui separatore è costituito dal carattere '$' anziche "::" come in C++.
I sorgenti NemesisC hanno sintassi diversa dal "C", per farli diventare
"C" devi farli passare attraverso due stadi di elaborazione e sostieni
che sono scritti in un altro "C"?
Allora visto che esistono p2c e f2c anche fortran e pascal sono
un altro "C".
Continuo a non essere convinto.
C:\>iao Angelo


 Continuo a non essere convinto.
Basta capire quello di cui si parla...


 Nemesis non si programma in MIDDL, così come corba non si programma in IDL.
cioe' stai contraddicendo quello che hai affermato un paio di post fa
<cite Alemagna>
  Il NemesisC è il linguaggio usato per programmare nemesis, 
  un mapping delle funzionalità del MIDDL al C.
</cite Alemagna>
Ora affermi che "l'unica cosa che viene utilizzata per *programmare* 
nemesis è un compilatore C e relativo preprocessore".
Con queste affermazioni non e' che mi chiarisci cos'e' il NemesisC.
Visto che l'ultimo aggiornamento riporta che per programmare nemesis
serve un compilatore C, e' possibile sapere come si chiama questo
compilatore.


 compilatore.
gcc e relativo cpp.


 gcc e relativo cpp.
Quindi un bel compilatore "C" (con relativo preprocessore) che non
ha la piu' pallida idea di cosa sia il NemesisC (sempre ammesso
che non l'abbiano modificato) [1].
Grazie :-)
C:\>iao Angelo
[1] Non so perche', ma lo sospettavo.


 [1] Non so perche', ma lo sospettavo.
Eh? E cosa credi di aver dimostrato?!


 Eh? E cosa credi di aver dimostrato?!
Io non dovevo dimostrare niente. Mi hai sempilicemente confermato
che, come riportato in 
nemesis.sourceforge.net/progtutweb/index.html
,
a detta degli autori nemesis si programma in "C".
C:\>iao Angelo


 a detta degli autori nemesis si programma in "C".
Scusa qui andava :-)


 a detta degli autori nemesis si programma in "C".
Caro mio, senza offesa, ma tu dai i numeri! Ma se prima dicevi che 
Nemesis *non* si programma in C, ma in un linguaggio che non ha niente a 
che vedere con il C...
Quoto da un tuo post precedente:
     I sorgenti NemesisC hanno sintassi diversa dal "C", per farli
     diventare "C" devi farli passare attraverso due stadi di
     elaborazione e sostieni che sono scritti in un altro "C"?
In ogni caso sì, nemesis si programma in C, il *NemesisC*, uno dei tanti 
dialetti di C disponibili.
Oppure mi vuoi dire che il "C standard" contempla cose come eccezioni e 
namespace?
