mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: passaggio di un array di strutture ad una funzione

Salve ragazzi, ho un problema che non riesco a risolvere:voglio utilizzare
una funzione Media che prenda come parametri un array di float e un intero:
float Media(float elementi[], int numelementi) in modo da calcolarne la
media.
Il problema sorge quando a questa funzione gli devo passare un array di una
struttura di questo tipo:
struct vettore {
float x;
float y;
} miovettore[20];
in cui gli devo passare tutti gli elementi miovettore[1].x; miovettore[2].x;
..... miovettore[20].x o quelli col campo y.
io pensavo di scrivere nella chiamata della funzione semplicemente
Media(miovettore.x,20); ma mi da errore.C' è un modo per fargli capire che
del  miovettore mi servono solo le componenti del campo x?
Grazie, Salvatore
-- 
Posted from 
relay2.inwind.it
 [212.141.53.73] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Grazie, Salvatore
Ci mancherebbe!
Lui si aspetta un vettore di float e tu quello gli devi dare...invece tu hai
un vettore di strutture cosa ben diversa!
O ti ricostruisci la funzione in modo che accetti come parametro la tua
struct o ne fai una intermedia che estragga un vettore float fatto dai campi
x del tuo vettore e la mandi a Media oppure...etc etc.

 del  miovettore mi servono solo le componenti del campo x?
No, devi passare tutto il vettore e poi, nella funzione media, accedere
al campo x.
EMG

del  miovettore mi servono solo le componenti del campo x?
No.
Ti conviene costruire un nuovo vettore di elementi float e copiarci
dentro i valori delle x, poi lo passi alla funzione.
Newsgroup: it.comp.lang.c
Titolo: NMI (int non mascherabile)

Ho scritto un programma da cui ho estratto questa porzione di codice che mi
da problemi se eseguita riavviando da DOS mentre funziona perfettamente
sotto windows 95 e 98.
Il programma usa l'istruzione RDTSC che restituisce in EAX:EDX il numero di
cicli di clock di CPU trascorsi dall'avvio. Questa istruzione puň essere
dunque usata per implementare un timer di incredibile accuratezza. Il
programma che ho scritto verifica dopo un'attesa di 1000 cicli di CPU se il
tempo che si č passato in attesa č veramente di circa 1000 cicli di CPU
oppure se c'e' stato un ritardo!!! Essendo eseguito ad interrupt
disabilitati l'attesa dovrebbe essere sempre di poco superiore al valore
atteso mentre in DOS, con un Compaq Celeron 500, capita che l'attesa sia
molto piů lunga, quantizzabile in circa 350us (Con 500Mz 1000 cicli
equivalgono a 2us). Sembra dunque che ogni tanto (in modo aperiodico)
durante l'attesa la CPU sospenda l'esecuzione del mio programma per 350us!
Essendo gli interrupt disabilitati potrebbe trattare dell'NMI!?!? E poi
perchč si verifica solo sul Celeron 500 e non sul mio Pentium MMX 233Mz???
Grazie per qualunque risposta in merito!
Alessio Carlini
Allego il programma:
/*---------------------*/
            test.c
/*---------------------*/
#include <stdio.h>
#include <dos.h>
/* CPU tick with RDTSC asm istruction*/
unsigned long long readtime(void);
int main(void){
unsigned long long int t,old_t;
int i;
int delta=1000; /* 1000 ticks!! */
 printf("Start \n");
    disable();
    for (i=0;i<1000000;i++){
        /* 1000 CPU ticks */
       old_t=t;
       do{
                t=readtime();
        }while ((signed)(t-old_t)<(signed)1000);
        /* skip case i==0 and if wait 20% more than 1000 CPU ticks exit */
        if (i && (t-old_t)>delta*1.2){
            printf("Error: i=%d (t=%Lu old_t=%Lu) dt=%Ld
\n",i,t,old_t,(t-old_t));
            break;
        }
    }
    enable();
    printf("End \n");
    return 0;
}
/*---------------------*/
            readtime.s
/*---------------------*/
        .globl _readtime
_readtime:
        rdtsc
        ret

 wrote:
<omesso>
disable() e enable() in dos non inibiscono tutti gli interrupt.....
il timer continua a funzionare.... la keyb idem... quindi??
mentre nella modalità v86 le cose si differenziano un pò
ciao
Antonio

 il timer continua a funzionare.... la keyb idem... quindi??
no questo non e' vero!
eseguendo CLI solo il NMI rimane attivo, tutti gli altri OFF
i dispositivi collegati continuano ovviamente a funzionare ma
l'interrupt non viene servito.
e' probabile che il problema di Alessio sia da imputare a qualche
dispositivo che prende il controllo del bus, mettendo in HOLD la CPU.
ciao
donCiccio
Newsgroup: it.comp.lang.c
Titolo: Librerie personali

Ciao a tutti .
Intanto devo ringraziare tutti quelli che mi hanno risposto nel post
precedente : siete stati davvero utili.
Adesso ho un altro problema : come posso definire in c un libreria personale
in cui includere tutte le funzioni da me create?
 Grazie in anticipo per le risposte.


dovresti compilare i file e poi "collezionare" i file oggetto in una 
libreria con un tool che di solito č fornito col compilatore e che si 
chiama lib.
ciao.
Newsgroup: it.comp.lang.c
Titolo: c++ : come si fa un array di oggetti?

Salve. Ho una classe c++ (chiamata USER) e devo fare una classe GRUPPO che
contiene 10 oggetti di USER; per ora l'ho fatta cosě:
class Gruppo
{
	public:
		Gruppo();
		~Gruppo();
		...
 
	private:
 
		User    utente[10] ;
 
 
};
Gruppo::Gruppo()
{
	for(int i = 0; i< 10 ; i++)
	{
		utente[i] =  new User();
	}
} 
purtroppo non va bene l'ultima  riga, quella col new...
qualcuno mi sa dare una mano? grazie.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 qualcuno mi sa dare una mano? grazie.
Questo e' un NG di C e non di C++.
Rispondo brevemente in quanto anche in C il discorso e' molto simile.
Ad ogni modo pare che tu provenga dal Java, no?!
Non serve fare new in questo caso.  Basta togliere il ciclo for nel
costruttore.
(new ti serviva se avevi un array di puntatori ad User e non un array di
User).
Beh, se hai altri problemi devi passare al NG adatto e magari studiarti il
C++. Java e' diverso non puoi sperare di vivere di "rendita" e programmare a
tentativi.
Tommy
Newsgroup: it.comp.lang.c
Titolo: Liste e passaggio di liste [URGENTE]

Salve, ho il seguente programma (o meglio estratti di programma)
struct Task_t {
    int num;              // numero
   struct Task_t* next;    // puntatore al prossimo task
};
typedef struct Task_t Task;
Task* hDemTask = NULL; // la testa della lista
Nel MAIN faccio
// creo task
newtask = (Task*)malloc(sizeof(Task));
newtask->num = 12;
newtask->next = NULL;
Ecco il problema, se per aggiungerlo (AGGIUNGO IN TESTA) uso la seguente
funzione
void addDemTask(Task* task) {
    // DALL'ULTIMO VERSO IL PRIMO
    if (hDemTask == NULL) {
        task->next = NULL;
    }
    else {
        task->next = hDemTask;
    }
    hDemTask = task; // LA NUOVA TESTA E' SEMPRE L'ULTIMO ARRIVATO
}
e chiamando dopo la creazione del task
addDemTask(newtask);
ALLORA TUTTO OK
------------------------------------
Se invece uso (quella che vorrebbe essere una funzione generica di
inserimento in testa per liste di task, passandogli la testa e il task da
aggiungere):
void addOnTop(Task* listhead, Task* task) {
    printf("listhead %p - task %p\n", listhead, task);
    if (listhead == NULL) {
        task->next = NULL;
    }
    else {
        task->next = listhead;
    }
    listhead = task; // LA NUOVA TESTA E' SEMPRE L'ULTIMO ARRIVATO
    printf("DUE: listhead %p - task %p\n", listhead, task);
}
chiamando dopo la creazione del task
addOnTop(hDemTask, itorT);
NON FUNZIONA, ovvero
sembra che i task vengano assegnati localmente a "listhead" (che secondo me
dovrebbe essere hDemTask), ma quando
esce da addOnTop, controllando hDemTask (globale) vedo che č vuota
Ovviamente sto sbagliando come al solito con 'sti maledetti puntatori...
Potete chiarirmi la questione??
Grazie mille


Dici bene!
Il passaggio per parametri avviene per valore; nella fattispecie viene 
copiato
l'indirizzo del puntatore in una nuova variabile puntatore quando la 
passi come parametro.
Quindi il risultato č nel puntatore interno alla funzione e visibile 
solo lě!
Per risolvere, devi sempre restituire l'indirizzo:
listaHead = addOnTop(...);


 >
Se non vuoi ritornare nulla, devi modificare la funzione addOnTop() in modo
che il primo parametro formale sia un puntatore a un puntatore ad una
struttura Task; in questa maniera, chiamando poi
addOnTop(&puntatoreAllaTesta, quellochevuoi) ti riporti in una situazione
gestibile all'interno della funzione stessa, perchè una chiamata per
riferimento e non per valore.
Ciao

Newsgroup: it.comp.lang.c
Titolo: AAAAAIIIIUUUUTTTOOOOOO per esecuzione NASCOSTA

ciao,
sto facendo un programma e vorrei che quando lo mando in esecuzione non mi
aprisse la finestra DOS e "lavorasse" in segreto
come posso fare?
Grazie.

aprisse la finestra DOS e "lavorasse" in segreto
Dalla menzione di "finestra DOS" si direbbe che tu sia sotto Windows.
Se cosi` e`, scrivi il programma come applicazione Windows e non di
console, fai tutto il tuo lavoro dall'entry point WinMain (non "main"),
senza
peraltro creare nessuna finestra, e dovresti andare abbastanza bene.
Alex
Newsgroup: it.comp.lang.c
Titolo: Due domande banali (credo)

@le
Byez, Paolo.

     Cioè, qual'è la sintassi più "regular"?
Io uso 
char               *                    p ;
Mi sembra piu' leggibile.
--
Andrea Laforgia (ICQ 87230455)
http://www.geocities.com/AndreaLaforgia
"ci sono tre tipi di persone nel mondo : quelli che
 sono bravi in matematica e quelli che non lo sono."
Newsgroup: it.comp.lang.c
Titolo: domanda su operatore <<

Se io ho una riga di codice del tipo
bits <<= 1       dovrebbe essere uno scorrimento a sinistra di 1
giusto?
il problema è non riesco a capire cosa succede in quest'altro caso:
1 << bits   in questo caso a cosa serve l'operatore <<?
Per farmi capire meglio, questa è la riga di codice completa in cui ho
trovato questa espressione:
#define SAMPLES     (1 << bits)

 1 << bits   in questo caso a cosa serve l'operatore <<?
Scusa, ma non hai un straccio manuale dove vedere il significato
degli operatori ?
In generale,  x << y fa scorrere x di y bit verso sinistra.
Cioe', a parte overflow e problemi possibili con i numeri
negativi, calcola  x*2^y.
Quindi 1 << b  e' uguale a 2^b ovvero, in binario,
ad un 1 sequito da b zeri.
Analogamente x >> y fa scorrever x verso destra di y bit.
Ovvero restituisce la parte intera di x diviso per 2^y.
ciao,
g.

nano bagonghi ha scritto:

grazie del chiarimento
il manuale ce l'ho ma non avevo capito la differenza tra b<<1 e 1<<b

Newsgroup: it.comp.lang.c
Titolo: E' possibile col C?

Salve a tutti
Vorrei sapere se si puo' fare questa cosa, con il Visual Basic non credo,
o per lo meno non ci riesco.
Il programma che sto realizzando (in Visual Basic) chiama un programma
(Dos) che deve essere eseguito contemporaneamente.
Vorrei che il programma Dos che lancio con la funzione
Shell occupasse poco le risorse della CPU:
non mi interessa che impieghi piu' tempo per essere eseguito,
mi interessa invece che rallenti poco il programma in Visual Basic.
E' possibile fare questo usando il linguaggio C ?
Ringrazio chi mi vorra' rispondere
Paolo

...


Newsgroup: it.comp.lang.c
Titolo: file descriptor

Come posso ottenere il file descriptor conoscendo il nome di un file?
Seva

 Come posso ottenere il file descriptor conoscendo il nome di un file?
Non c'e' un modo standard, ma probabilmentge su ogni piattaforma c'e' un
metodo. Chiedi sul NG speficico.
Sotto Unix per esempio puoi usare la funzione:
    int fileno(FILE *stream);
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."
Newsgroup: it.comp.lang.c
Titolo: [OT] su macro e nomi funzioni

Che voi sappiate, è possibile definire il nome di una funzione a 
compiler-time tramite concatenazione di una macro?
Esempio: se definisco una macro
#define MYVERSION=10
vorrei in compilazione generare una funzione tipo:
void myfunction10() {
}

 wrote:

#define CAT_(x,y) x##y
#define CAT(x,y) CAT_(x,y)
#define MYVERSION 10
#define MYNAME myfunction
CAT(MYNAME,MYVERSION)(int);
-- 
Horst

 compiler-time tramite concatenazione di una macro?
#include <stdio.h>
#define MAKEFUNCNAME(a,b) a##b
void func1()
{
     puts("sono la func1");
}
void func2()
{
     puts("sono la func2");
}
void func3()
{
     puts("sono la func3");
}
int main(int argc, char *argv[])
{    
    MAKEFUNCNAME(func, 1)();
    MAKEFUNCNAME(func, 2)();
    MAKEFUNCNAME(func, 3)();
    return 0;
}
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
Una sola domanda (da ignorante), l'operatore "##" serve a concatenare 
giusto?
-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Xoen
Jabber ID : 
xo...@jabber.linux.it
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 #define CAT(x,y) CAT_(x,y)
Ah, ecco... la doppia espansione è il trucco ;)
Grazie

 giusto?
Solo a livello di preprocessore.


Newsgroup: it.comp.lang.c
Titolo: approssimazione sprintf

Usando la sprintf sotto linux in questo modo:
sprintf(string, "%.2e", numero); //dove numero č float
ottengo in string una cosa del tipo: 1.78e-02
mentre sotto windows ottengo: 1.78e-002
Perchč?
grazie e ciao

 mentre sotto windows ottengo: 1.78e-002
Beh, direi che è solo una differenza di rappresentazione, visto che i
float necessitano solo di due cifre nell'esponente. I double invece ne
necessitano di 3.
In effetti in certe situazioni questo porebbe essere un problema visto
che i due sistemi si comportano in maniera diversa. Non credo comunque sia
una differenza fra Linux e Windows ma fra due compilatori diversi.
-- 
Per rispondere via email rimuovere 123
Newsgroup: it.comp.lang.c
Titolo: Perchè mi segnala un errore

Salve, provando a compilare questo programmino
#include "stdio.h"
#include "stdlib.h"
#include "tab_lib.h"
void html_start(void)
{
printf("<html>\n");
}
void html_end(void)
{
printf("</html>\n");
}
void head_start(void)
{
printf("<head>\n");
}
void head_end(void)
{
printf("</head>\n");
}
void title(char *dato)
{
printf("<title>%s</title>\n",dato);
}
void body_start(char *bgcolor)
{
printf("<body bgcolor=\"%s\">\n",bgcolor);
}
void body_end(void)
{
printf("</body>\n");
}
void table_start(char *width, char *height, char *align,char *border)
{
printf("<table width=\"%s\" height=\"%s\" align=\"%s\" border=\"%s\">\n",width,height,align,border);
}
void table_end(void)
{
printf("</table>\n");
}
void td_start(char *width, char *height)
{
printf("<td width=\"%s\" height=\"%s\"> %s\n",width,height);
}
void td_end(void)
{
printf("</td>\n");
}
void tr_start(void)
{
printf("<tr>\n");
}
void tr_end(void)
{
printf("</tr>\n");
}
void h4_start(void)
{
printf("<h4>\n");
} 
void h4_end(void)
{
printf("</h4>\n");
}
void h2_start(void)
{
printf("<h2>\n");
}
void h2_end(void)
{
printf("</h2>\n");
}
void scrivi(char *dato)
{
printf("%s",dato);
}
void href(char *voce,char *indirizzo)
{
printf("<p><a href=\"%s\">%s</a> </p>",indirizzo,voce);
}
//creazione dei menù leggendo da file.txt
void crea_menu(char *lista1, char *lista2)
{
char voce[80];
char indirizzo[80];
FILE* fp;
FILE* pf;
fp=fopen(lista1, "r");
pf=fopen(lista2, "r");
while(fscanf(fp,"%s",&voce)>0)
{
fscanf(pf,"%s",&indirizzo);
href(voce,indirizzo);
printf("\n");
}
fclose(fp);
fclose(pf);
}
void stile_css(char *fogliostile)
{
printf("<link rel=\"stylesheet\" type=\"text/css\" href=\"%s\">",fogliostile);
}
ottengo il seguente errore
tab_lib.c:5: error: expected ‘;’, ‘,’ or ‘)’ before ‘{’ token
ma non capisco cosa manchi, a me sembra corretto.
Francesco

 ma non capisco cosa manchi, a me sembra corretto.
L'errore potrebbe essere in tab_lib.h : verifica verso la fine di quel file.
ciao
Giacomo

> L'errore potrebbe essere in tab_lib.h : verifica verso la fine di quel file.
Si, l'errore era in tab_lib.h, mancava una parentesi, ed io non riuscivo a
vedere l'errore.
Francesco
Newsgroup: it.comp.lang.c
Titolo: aiuto errore C2371

Ciao  a tutti,
sto preparando un programmino che legga dei dati da un file rubrica.rub e li 
stampi a video. Per stampare a video utilizzo una procedura "visualizza" 
però mi restiusce questo errore:
C:\Programmi\Microsoft Visual Studio\MyProjects\R2\R2.c(21) : error C2371: 
'visualizza' : redefinition; different basic types
Non riesco a capire il perchè, posto il codice cosi magari c date un occhio.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define DIM 100
typedef struct {
 char nome[30];
 char cognome[30];
 char tel[20];
 int eta;
}CONTATTO;
void main()
{
 FILE *f;
 visualizza();
}
void visualizza()
{
 CONTATTO e;
 FILE *f;
 f=fopen("c:\\rubrica.rub","rb");
 if (f==NULL)
 {
  perror("Errore");exit(1);
 }
 while(fread(&e,sizeof(CONTATTO),1,f)>0);
 {
  printf("%s %s %s %d\n",e.nome,e.cognome,
e.tel
,e.eta);
 }
 close(f);
}

 {
quando il compilatore arriva a compilare il main,
trova visualizza();
che e' una funzione che non ha incontrato precedentemente
e assume implicitamente che il tipo di dato ritornato sia "int".
Quando subito sotto incontra void visualizza()...
gli risulta che tu stia ridefinendo la funzione visualizza,
visto che per lui ritornava int e invece ora ritorna void.
Devi sempre fare in modo che quando il compilatore
arriva a compilare una invocazione di funzione
sappia' gia' quale tipo la funzione ritorna.
Questo si fa in due modi
1) metti la funzione visualizza() prima del main...
2) metti l'header della funzione prima del main:
void visualizza();
int main()
{
}
void visualizza()
{
}
ciao,
g.

Sei stato gentilissimo a risp.
Ho capito tutto, ti ringrazio sei stato molto chiaro!
Leggendo meglio poi il libro ho scoperto che mettere l'header prima del main 
si chiama prototipo di funzione.
Grazie ancora non ci sarei mai arrivato da solo!

Newsgroup: it.comp.lang.c
Titolo: [SDL] web browser

Qualcono sa dov'è possibile reperire del codice open-source in C o C++
che faccia da Web Browser ?
Se possibile averlo per le librerie SDL è meglio, altrimenti me lo
adatto io.
Purtroppo non sono riuscito a trovarlo in rete, spero di aver
sbagliato io a cercare.
Grazie e ciao.

www.mozilla.org
?
Ciao,
Nicola

 adatto io.
Ci sono almeno un paio di port in corso per rimuovere le dipendenze da 
QT di KHTML, se cerchi con google li trovi.
In ogni caso non e` un lavoro da poco quello che vuoi fare!
Ciao,
  Gabry

"Marcello" <marc...@unlockGate.net> ha scritto nel messaggio
news:ba12d50f.05022...@posting.google.com...

Hai provato a cercare sul sito di SDL ?
;-)
dal sito 
www.libsdl.org
  , segui il link libraries e cerchi...
e salta fuori questo link:
http://jcatki.no-ip.org/SDL_websrv/
:-)
-- 
Ciao!

 
http://jcatki.no-ip.org/SDL_websrv/
Così ad intuito direi che "srv" stia per ¨server", l'opposto di browser :)
-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Xoen
Jabber ID : 
xo...@jabber.linux.it
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Newsgroup: it.comp.lang.c
Titolo: Stranezze della compilazione(?)

Sto scrivendo un programmino per monitorare il funzionamento di un triodo,
(stato proprio embrionale) e mi è successa una cosa strana:
Scritto una
parte del codice e fatti leggere dei dati da un file esterno nel proseguo
dell'esecuzione questi vengono modificati
senza che esista una riga di
codice che lo faccia. 
Me ne sono accorto mettendo dei print con la
variabile che mi
interessa e ad un certo punto questa cambia.
Come
compilatore uso sia Lcc che dev c++, ed il bello è che entrambi gli
eseguibili creati con i due compilatori danno dei
problemi diversi.
Il
codice l'ho ricontrollato un'infinità di volte e mi sembra corretto, anche
se non sono espertissimo una assegnazione
la riconosco :-)
Può quindi
dipendere dal compilatore?
Se volete il codice per darci un'occhiatina ve
ne sarei grato
maè meglio che mi contattiate in e-mail, che spiego meglio
il funzionamento.
Grazie e ciao
PS occhio all'antispam
--------------------------------
Inviato via 
http://usenet.iol.it

interessa e ad un certo punto questa cambia.
Dipende da te :)
Il fatto che compilatori diversi diano errori diversi significa che
caschi in un undefined behaviour o un un errore, non cosi' grave da
dare un segfault pero', ma non per questo meno subdolo.
Potrebbe essere un overflow in scrittura di qualche buffer, magari
controlla che tu non abbia mai fatto cose simili:
int i;
int j=5;
char stringa[10];
for (i=0; i<=10;i++)
	stringa[i] = 0;
Su alcune implementazioni dopo il for la variabile "j" varra' 0 e tu
non l'hai mai assegnata e ti chiederai perche' succede.
Discorso analogo per dei puntatori assegnati male.
Prendi in mano un bebugger, monitorizza la variabile in questione,
procedi step by step piu' nella zona in cui questa cambia valore e
troverai l'istruzione incriminata.
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."




Grazie adesso provo a controllare
meglio :-)


Dipende
da te :)
E avevi proprio ragione Avevo controllato e ricontrollato il
codice avanti e indietro e mi ero dimenticato di controllare
le
dichiarazioni delle variabili.
Infatti a mano a mano che il progetto č
cresciuto un array
si č un po' "allargato" e mi sono dimenticato di
aggiornare
la sua dichiarazione.
Quando ci si fissa non si vede piů in
la del proprio naso.
Grazie per avermi tolto d'impiccio.

Newsgroup: it.comp.lang.c
Titolo: Programmare le EPROM

Ciao ragazzi,
ho comprato da poco un programmatore di eprom e pic.
mi hanno detto che esistono de i software per programmare le Eprom in C, voi 
ne sapete qualcosa? mi farebbe molto comodo un software del genere.
ciao grazie.
Klayman
_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at 
http://www.hotmail.com
.
-- 
Posted from [137.204.72.85] by way of 
f172.law10.hotmail.com
 [64.4.15.172] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Dipende da quale microprocessore dovra´ eseguire il tuo programma codificato
sulla Eprom.
Ogni microprocessore ha associato un compilatore e un ambiente di sviluppo
col quale potrai programmare in C, compilare linkare e caricare sulla tua
Eprom.
Maurus


Sul mercato sono disponibili compilatori C per i PIC (microcontrollori della
Microchip).
Il fatto č che di PIC ce ne sono di piů famiglie (PIC15, PIC16, PIC17 e
PIC18).
Per le famiglie 17 e 18 la microchip mette a disposizione dei compilatori C.
Per le altre famiglie devi cercare un compilatore di terze parti, i migliori
sono commerciali, dai $100 in su. Ne esistono alcune versioni dimostrative.
Puoi cercare piů informazioni sul sito della Microchip (
www.microchip.com
).
Per quanto riguarda il discorso delle Eprom, normalmente i PIC possono
eseguire solo i programmi residenti nella memoria del microcontrollore
stesso (mancano proprio i segnali di address e data sul micro).
Ciao Pietro
--
The pawn is the most important piece on the chessboard...
up to the pawn.
Newsgroup: it.comp.lang.c
Titolo: Aiuto

Ciao, mi chiamo Mauro e sono un utilizzatore quotidiano di Access 97 e
santuariamente di Visual Basic 5.
Mi complimento per il sito perchè è veramente bello e completo di
informazioni di tutti i generi.
Tuttavia volevo porvi una domandina visto che sul newsgroups di Access
nessuno è stato in grado di rispondermi.
La domanda è la seguente:
Non riesco a disabilitare il pulsante di chiusura della casella di controllo
del database di Access (attenzione non delle maschere!).
Esiste un esempio sul sito comune it.comp.database.access che mi nasconde i
pulsanti di riduzione ad icona, di ridimensionamento e di chiusura,
praticamente tutta la casella del menu di controllo.
Io vorrei invece poter utilizzare ancora il pulsante di riduzione ad icona e
di ridimensionamento ma disabilitare o nascondere all'utente solo la
possibilità di chiudere l'applicazione costringendolo ad utilizzare il
pulsante da me creato all'interno di una maschera.
Grazie per l'eventuale aiuto.
Mauro

santuariamente di Visual Basic 5.
Ciao Mauro,
Il  tipo  di informazioni che stai cercando non  ti  possono
essere  date  qui dentro in quanto il gruppo di  discussione
(bada   bene  :  non  il  sito)  it.comp.lang.c  tratta   il
linguaggio di programmazione C.
Devi  porre  molta  attenzione  nella  spedizione  dei  tuoi
messaggi  in quanto puo' capitare che essi  raggiungano  dei
luoghi  (come  questo)  dove vengono  considerati  off-topic
(ovvero  fuori  discussione),  risultando,  di  conseguenza,
molto fastidiosi.
Penso  che  i  ng  it.comp.database.access  e  it.comp.aiuto
siano i posti giusti dove chiedere aiuto.
Newsgroup: it.comp.lang.c
Titolo: Altrimenti butto il programma

Premetto: le mie conoscenze del linguaggio C sono minime.
Malgrado questo sono quasi riuscito a crearmi un piccolo
programma  per eseguire alcuni calcoli che mi servono.
Purtroppo ho un ostacolo per me insorrmontabile.
Il paradosso è che non si tratta di una questione di linguaggio
ma di semplice matematica.
Non riesco a risolvere la seguente e maledetta equazione:
((x+1)^t) * ((n*x)+1)=m
Dovrei risolvere per x. Purtroppo t mi da fastidio. Ho provato
ad utilizzare i logaritmi, ma niente da fare......
non ci riesco.
Lo so che sono uscito dal tema del newsgroup. Ma tra i
miei amici e conoscenti non c'è un cane che sa un po'
di matematica.
Se nel newsgroup ci fosse qualche anima buona
che si diletta di matematica ...........
..........gli sarei infinitamente grato.
Ciao
Angelo.

 
ciao.
Anche se non sono sicuro che funzioni, potresti provare 
a scrivere l'equaz. in questo modo :
 x = m/(n*(x+1)^t) - (1/n)
e poi nel programma potresti risolverla in modo
autoconsistente, cioe':
 
- parti da un x0 di partenza
- con questo x0 calcoli il secondo membro dell'eq.
- ottieni cosi' un valore nuovo di x che chiamiamo x1
- con questo x1 calcoli ancora il secondo membro dell'eq.
- ottieni cosi' un valore nuovo di x che chiamiamo x2
...
continui cosi' fino a quando non arrivi a convergenza,
cioe' quando la differenze tra due valori successivi di x
e' minore di un epsilon che fissi tu all'inizio.
speriamo che funzioni ... mah...
ciao
Davide

ad utilizzare i logaritmi, ma niente da fare......
potrei sbagliarmi, ma non credo che ci sia un metodo univoco per
risolvere questa equazione per ogni t (a meno che m==0). Forse
potresti usare il metodo di Ruffini, ma sarebbe un po' macchinoso da
implementare in C.
Se ti accontenti forse è meglio se provi a trovare una soluzione
approssimata.
Curiosità: a cosa ti serve risolvere questa equazione?
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench Certification: 
Master C++: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
http://www.brainbench.com/transcript.jsp?pid=1301688

 Curiosità: a cosa ti serve risolvere questa equazione?
Per calcolare gli interessi in % di investimenti  in t anni
dove t è frazionario (conosciuto il capitale iniziale
investito, e il capitale finale realizzato- tramite gli
interessi composti- a termine dell'investimento).
Scusa è detto un pò pasticciato ma ci vorrebbe
una spiegazione molto più lunga.
ciao
Angelo

una spiegazione molto piů lunga.
it.scienza.matematica.
Suggerirei agli altri partecipanti alla discussione di non alimentare
temi non in linea con il topic del gruppo.
Grazie.
--
Walkie...@Libero.It (ICQ# 8143647)
Newsgroup: it.comp.lang.c
Titolo: Aiuto con Inline Assembly

Ho bisogno di aiuto con l'inline assembly in C.
Sto scrivendo un OS in C e mi serve una funzione per prendere l'input
attraverso un interrupt al BIOS.
ho scritto questo codice:
 char ReadChar() {
    char x;
    asm("mov $0x00, %ah");
    asm("int $0x16");
    asm("mov %al, $x");
    return x;
 }
ma il compilatore (GCC) dà questo output:
/tmp/ccS7wCle.s: Assembler messages:
/tmp/ccS7wCle.s:28: Error: suffix or operands invalid for "mov"
Ho assolutamente bisogno di questa funzione, quindi vi chiedo di
ripondere se potete aiutarmi :D grazie mille


questa dovrebbe andare:
char ReadChar()
{
    char _x;
    __asm__ volatile ("xorl %%ax, %%ax;\nint $0x16;\n"=a"(_x));
    return _x;
}
Ciao!

 Ciao!


Grazie mille per il codice, ma non va :( probabilmente quel '"'
dopo :=a non va bene.
Da come output:
ReadChar.c: In function 'ReadChar':
ReadChar.c:22: error: expected string literal before '=' token
ReadChar.c:22:56: warning: missing terminating " character
ReadChar.c:22: error: missing terminating " character



vediamo se riesco a mettere le virgolette bene, alla fine! (stavolta
l'ho provato e compila)
;)

Grazie mille, compila! Non va, però compila! XD è già un passo avanti!
mi studierò il source.

Newsgroup: it.comp.lang.c
Titolo: allineamento testo

Ciao,
esiste una funzione...o un qualcosa che permetta di allineare il testo?
O meglio...oltre al gotoxy(num,num), sempre che sia corretto...c'è qualcosa
di più corretto o preciso...boh...non so!
Grazie
Byez
B@STI


Non in C standard, che non e' previsto per sistemi dodati di monitor.
Esistono libreria apposta per il terminale che usi (ncurses, conio).
E' gia' stato trattato piu' ampiamente in post precedenti, rileggiteli
magari per i dettagli.
Mox
-- 
Mox

di più corretto o preciso...boh...non so!
Sicuramente, ma ti conviene chiedere in un NG che parli del sistema
operativo in cui intendi farlo.
Qui si parla di C standard, che non conosce le funzioni di
formattazione del testo, eccettuati i tab e poco altro.
Il se vuoi programmare per Windows il posto in qui chiedere dovrebbe
essere
it.comp.lang.programmare.win32
In ogni caso in bocca al lupo! :-)
Sicuramente troverai ciò che cerchi.

Il se vuoi programmare per Windows il posto in qui chiedere dovrebbe
volevo dire "in cui"... ;-)
Sarà l'ora. :-)))

it.comp.lang.programmare.win32
it.comp.programmare.win32
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]
Newsgroup: it.comp.lang.c
Titolo: array di puntatori a carattere

3 semplici domandine per gli esperti in materia:
int var=3;
char *parametri[3];
parametri[0]="nomefile";
*parametri[1]=var;
Parametri dovrebbe essere un array di puntatori a carattere;detto ciò,
non mi è chiaro perché l'ultima istruzione va a buon fine(ovvero
riesco a memorizzare nella locazione puntata da uno di quei puntatori
a carattere un intero), e soprattutto perché quest'ultima non è
equivalente a
parametri[1]=&var;
che, al contrario, dà errore, perché si accorge della discrepanza di
tipi.
-----------------------------------------------------------------------------------------
Perché ad una funzione che ha come parametro formale un 
char *argomento 
riesco a passare un int in questo modo:
&var
quando questo è l'indirizzo di un int e non di un carattere?
-----------------------------------------------------------------------------------------
Che differenza c'é tra un parametro formale 
char** argomenti             
char* argomenti[]
se poi passando come parametro attuale un 
char *argom[]
il risultato è lo stesso?
grazie

 il risultato è lo stesso?
Si`, nel passaggio come parametro il nome dell'array decade a puntatore
al primo elemento. Poiche` il primo elemento e` un char *, argom decade
a char **.
Luca
[1] Dovrebbe nel senso che sono sfaticato e non ho controllato lo
standard :)
-- 
Home: 
http://kronoz.cjb.net
Alcuni pensano che io sia una persona orribile, ma non e` vero. Ho il
cuore di un ragazzino - in un vaso sulla scrivania.

 standard :)
grazie.
Mary

 si volesse passare il valore di un int come parametro?
Con la execl non si fa perche` non avrebbe alcun senso. Se hai una
funzione:
void foo(char *bar);
a cui vuoi assolutamente passare un puntatore ad intero metti un cast
per rendere la cosa esplicita:
int i;
foo((char *)&i);
In questo modo anche per chi legge il codice risulta chiaro che il
passaggio di un int * e` voluto e non e` un errore.
Luca
-- 
Home: 
http://kronoz.cjb.net
"Chi parla in tono cortese, ma continua a prepararsi, potra` andare avanti;
 chi parla in tono bellicoso e avanza rapidamente dovra` ritirarsi" 
Sun Tzu -- L'arte della guerra

 Luca

argomento un puntatore a tipo diverso da quello previsto no.
Non è vero , viene mostrato un warning in ogni caso .

consiglio di comprendere il ruolo dei parametri che gli passi .
Nel passo di sopra mi sono reso conto che potrei lasciar intendere che si
può fare . NO! Non è possibile usare le funzioni della famiglia exec per
fare ciò. 

 argomento un puntatore a tipo diverso da quello previsto no.
Dipende dal livello di warning del compilatore. Se e` un derivato del
gcc usa -Wall. In questo caso il compilatore non e` tenuto a segnalare
il warning (a norma di standard), ma solitamente tutti i compilatori
decenti permettono di attivare tali warning.
Luca
-- 
Home: 
http://kronoz.cjb.net

Newsgroup: it.comp.lang.c
Titolo: AIUTO !! parentesi { }

esiste un metodo "generale" tipo ALT123 di Windows ?
Dovrebbe funzionare ALT_GR+8 e ALT_GR+9 in console, con 7 e 9 in X.
Hint: prova anche ALT_GR+0 (in console), ALT_GR+ě (in X) e ALT_GR+'
(in entrambe)...
Ciao,
-- 
Riccardo Tromba
(per rispondermi in mailbox, rimuovete NO e SPAM dall'indirizzo)
   Per pensare, scrivere, spedire questo messaggio
  non č stato necessario alcun software commerciale
--*     (-:   L I N U X : join & enjoy!   :-)     *--

Salve a tutti.
Ho appena installato Open Linux é ho voluto provare il compilatore;
volevo dunque editare un programmello con il vi di questo tipo:
#include <stdio.h>
int  main(  int argc, char *argv[] )
{
  return  0;
}  /*    */
ora il programma é banale ... solo che nella mia tastiera italiana non ci
sono le graffe e il solito trucco ALT123 e ALT125 non funziona ....
Per favore mi dite come si fa a generare le graffe con vi e se per caso
esiste un metodo "generale" tipo ALT123 di Windows ?
Grazie

 wrote in message 83jr8p$mqm$1...@nslave1.tin.it...


esiste un metodo "generale" tipo ALT123 di Windows ?
<alt-gr>+7={
<alt-gr>+0=}
-- 
 +-------------------------------------------+ 
 |        Enrico Bodo  -   PhD student       |
 |      University of Rome "La Sapienza"     |
 |          Department of Chemistry          | 
 +-------------------------------------------+  

}  /*    */
Eh eh strano vero passare dal visual c++ a prompt  ;-)
In ogni caso per stampare le grafe devi premere
ALTGR (quello sulla destra) + 7  e ottieni {
ALTGR (quello sulla destra) + 0  e ottieni }
buon inizio :-)
NamkoTech

Per favore mi dite come si fa a generare le graffe con vi 
AltGr + 8 
AltGr + 9
-- 
Ciao            --- Massimo ---
Newsgroup: it.comp.lang.c
Titolo: Come faccio...

Salve a tutti , ho un problema , devo poter uscire da svariati
cicloi di for annidati .Che comando uso? KBHIT?
come si usa?
uso Djgpp+WinME .
Grazie a tutti


kbhit non serve al tuo scopo, e in più non è standard. Devi usare il
comndo break, che ti fà uscire dal ciclo in cui è incluso. Ad esempio:
for (int i=0; i<10; i++) {
   //codice;
   if(/*qualcosa*/)
      break;
}
Se la condizione espressa nell'if è verificata esce dal for anche se
i<10. Se il for è annidato in un altro for, per uscire anche da questo
puoi utilizzare una variabile esterna a tutti i cicli, inserendo in
ognuno una verifica su tale variabile. Ad esempio:
int test=0;
for (int i=0; i<10; i++) {
   for (int j=0; j<20; j++) {      
      //codice;
      if(/*qualcosa*/) {
         test=1;
         break;  //esce dal for annidato
      }
   }
   //codice;
   if(test)
	break; //esce dal primo for
}
Ovviamente i vari if andranno posizionati a seconda del codice da
scrivere.
Ciao,
Cecco

scrivere.
Oppure se hai veramente tanti IF annidati e non vuoi controllare test
tutte le volte puoi ricorrere a un'istruzione altamente deprecata in
tutti i linguaggi di programmazione :P  tranne in rari casi come
questo: il GOTO.
Nota che in genere il goto rende il tuo codice poco leggibile. I casi
in cui conviene usarlo sono veramente pochi. Uno in cui secondo me
aiuta e' questo:
<CODE>
for () {
    for () {
        for() {
            for() {
                for() {
                    /* ... */
                    if (fine_di_tutti_i_cicli)
                        goto label_fuori;
                    /* ... */
                }
            }
        }
    }
}
label_fuori: /* ... */
</CODE>
Un thread simile era gia' nato sul NG e questa mi pare fosse l'unico
caso in cui ci si fosse trovato daccordo a dire che il goto fosse
elegante e chiaro.
Soprattutto perche' fa solo un salto in avanti e ti risparmia N
controlli che risulterebbero piu' complessi da fare e piu' difficili
ca seguire che non 1 semplice goto.
Mox :)

Newsgroup: it.comp.lang.c
Titolo: facile lettura da file 2

ah dimenticavo, a me serve far leggere il vettore per fare poi un'
operazione, cioè moltiplicare una certa quantità per ogni singolo
elemento del vettore letto dal file. è lecito farlo direttamente, cioè
semplicemente
...
x=(a*b(n))*vett(n);
dove n indica l'elemento dell'array?
grazie a tutti

 dove n indica l'elemento dell'array?
Ci vanno le parentesi quadre per prendere la componente di un vettore, non
le tonde.
Newsgroup: it.comp.lang.c
Titolo: Ed ora la grafica :)

Salve. E' un po che non vi chiedo qualcosa... ora sto cercando di
passare alla grafica. Ieri ho trovato in internet un po' di
documentazione sul come disegnare una linea sullo schermo. Però c'è un
problema: il sorgente utilizza la funzione putpixel(). Dove la trovo?
richiede in input due interi ( x le coordinate) ed un char ( il colore).
Se qualcuno sa dove trovo sta putpixel sarà infinitamente ringraziato da
un gruppo di giovani programmatori (si fa per dire). Grazie. Ps. io
utilizzo turboC v2.0 su win98. Grazie
-- 
Posted from 
c000-h011.c000.muc.cp.net
 [209.228.29.35] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 wrote in message
3AA52705...@katamail.com...


 ha scritto nel messaggio
news:Fodp6.105201$Y93.2...@news.infostrada.it...


Newsgroup: it.comp.lang.c
Titolo: Problema

Ciao a tutti
sono uno nuovo di questo newsgroup sarei grato a chiunque potrà aiutarmi con
questo piccolo problema.
Vi ringrazio anticipatamente.
Fornire la soluzione del problema z=A*x+y noto come Gaxpy (General A * x +
y), dove A è una
matrice di dimensione m * n, x è un vettore di dimensione n, y e z sono
vettori di dimensione m.
L'elaborato scritto consiste nella Documentazione completa (privo solo degli
elementi di
complessità e precisione) della soluzione realizzata mediante l'uso di una
unica Procedura (gaxpy)
che esegue il calcolo. È consentito, eventualmente, l'uso di una procedura
di lettura dati, che però
deve essere documentata a parte.
Non è consentito l'uso di variabili globali. È necessario l'uso corretto dei
parametri.

 wrote

Quale e' la domanda?!?
Non vorrai mica la soluzione al tuo problema?!?
Di solito uno inizia e dove si blocca chiede aiuto. Tu dove sei arrivato?!?
Quale problema ti ha bloccato?!?
In che cosa vuoi essere aiutato?!?
Tommy

Newsgroup: it.comp.lang.c
Titolo: dove trovo librerie?risp per favore

come da oggetto:
dove posso trovare librerie per c/c++?
risp presto grazie

 risp presto grazie
Per le consulenze veloci fanno 50E all'ora
-- 
-=[]=---iAN CooG/HokutoForce+TWT---=[]=-
Un impegno concreto: piu' pleistescion per tutti

 Per le consulenze veloci fanno 50E all'ora
E per quelle moltooooo generiche ( "librerie C/C++"... ma per fare 
cosa?? :) direi che c'e' un ulteriore rincaro ;)
Newsgroup: it.comp.lang.c
Titolo: Primi passi col K

Andrea Laforgia
Ciao!
Andrea Massucco      
and...@dircon.co.uk
      ICQ: 31185185
################################################
# gaudeamus maxime in nomine Bacci, Tabacci Venerisque #
################################################

significato di quel -1
Giusto per eliminare quel piu' o meno ;)
Considera la funzione che restituisce il carattere in input.
La funzione non restituisce un "char", ma un "int".
Perche' secondo te ?
La risposta e' che l'int ha uno spettro di valori maggiori del char, e si
possono considerare anche i valori negativi.
Per la possibilita' di compiere assegnamenti all'interno di controlli del tipo
"if", "while" ecc.. e' molto piu' comodo affidare alla routine di lettura
dell'input il compito di segnalare l'end of file.
Ora, utilizzando un "char" come valore di ritorno, sorgerebbe un problema di
saturazione.
Tutti i valori possibili, assumibili da una variabile char, sarebbero impegnati
per rappresentare i caratteri e non ne avanzerebbero per rappresentare l'EOF.
Quindi viene usato un valore intero, in modo da contemplare tutti i valori dei
caratteri, piu' il valore -1.
Ma per convenzione EOF potrebbe essere 15000, oppure -60, oppure un altro valore
che non sia nel range 0..255.
Il programmatore non ha necessita' di sapere quanto valga esattamente.
 
Andrea Laforgia
----
I guai ve li andate a cercare : 
quando Bill Gates annuncio' che avrebbe fatto scrivere 
Windows98 a Topo Gigio perche' non gli avete creduto ?
Newsgroup: it.comp.lang.c
Titolo: Matrici in C

Esistono delle librerie per il calcolo matriciale in C?
(Non voglio fare i prodotti matriciali, le inverse di matrici, scrivendo
tutto in forma scalare.....)
Grazie
Ciao

 ha scritto nel messaggio
news:38FC69F3...@tiscalinet.it...


 che vuol dire scrivere matrici in forma scalare?
Mi sono espresso male...Volevo dire che devo scrivere i prodotti tra
matrici calcolando i coefficienti ad uno ad uno:
Cij=Sum(Aik*Bkj)
per i prodotti ancora, ancora si può fare...
per l'inversa un po' meno...
Mi hanno consigliato di interfacciare il mio programma con subroutine
Fortran, stando attento ad alcuni dettagli (Trasposizione,Shift...)
ma sinceramente non sò bene come fare, anche perchè il fortran...non lo
conosco molto bene...
Newsgroup: it.comp.lang.c
Titolo: [REQ] gcc x win98?

Ciuaz a tutti, qlc mi saprebbe consigliare un buon compiler di ANSI C senza
troppi fronzoli, diciamo sulla falsariga del gcc come semplicità e
funzionalità.
Escludete lcc32 (che funziona quando gli gira - o meglio, quando x qualche
caso fortuito riesco a farlo girare) e cygwin (che ha un'installazione
strana e mi va in conflitto con l'eSafe Protect xé va a modificare file di
sistema)
Thx!!!
--
Best regards,
Ciro Mattia Gonano
aliases: Lestat de Lioncourt
             Saraquel
             Lord Azariel
ICQ#: 52631406
ICQ#: 110819144
________________

 wrote:
cygnus c++ x windows che é il porting del gcc sotto windows..
mi pare che l'ultima versione sia sui 100mb, ha una console
che sembra quella di unix, é veramente carina..
implementa la libreria del gnu c++ in modo identico,
pensando poi lui a fare la corretta traduzione con le api di windows,
pekkato che alcune syscall come fork() non siano poi implementate
xché windows non le supporta
cod

xché windows non le supporta
La versione che ho io (che non è l'ultima, mi pare che l'ho presa da
www.cygwin.com
, il sito ufficiale) (forse è non è .com, è .qualcos'altro) la
supporta, anche se la implementa in maniera un po' incasinata (per l'utente
finale va tutto bene, cmq).
Lanugo

Lanugo
la syscall fork????? sarebbe proprio comodo se fosse supportata,
finalmente potrei fare il porting dei miei applicativi senza dover
creare delle varianti secondo l'ambiente in cui gira...
cmq ora controllo
cod

Newsgroup: it.comp.lang.c
Titolo: flexible array member

Qualcuno mi aiuta a capire cosa sono esattamente, come si comportano e 
soprattutto come potrebbero essere implementati su un'architettura i386?
In particolare non ho capito le due eccezioni di cui si parla.
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

 In particolare non ho capito le due eccezioni di cui si parla.
(nello standard)


 (nello standard)
ma quale standard (il solito casino :D)? C99?
se si, c'è una semplice spiegazione qui:
http://www.comeaucomputing.com/techtalk/c99/#flexiblearrays
ciao.

 ciao.
Ti ringrazio, ma mi sembra che abbiano preso la spiegazione dello 
standard e abbiano cambiato i nomi. Credo anche che abbiano aggiunto un 
paio di errori nel calcolo delle dimensioni. Intanto anche io sto 
cercando, ma non trovo niente di semplice. Magari poi e' piu' facile di 
quello che sembra..

Newsgroup: it.comp.lang.c
Titolo: C e asm

Salve a tutti, vorrei provare a programmare in misto c\asm sia su win
che su linux. che combinazione di compilatore\assemmblatore usereste?
Io pensavo a un compilatore leggero e senza tanti fronzoli, cos�,tanto
per fare un p� di prove...per l'assemblatore non saprei. Inoltre, si
riesce, con qualsiasi compilatore, ad indirizzare i blocchi d icodice
dopo l aparola riservata 'asm', verso qualsiasi assemblatore?
Ciao.


Personalmente cercherei di scrivere c e asm in moduli separati, in
maniera da poterli compilare distintamente, e successivamente usare un
qualsiasi linker.
IMO la regola di usare moduli di compilazione separati per tutto ciò
che è system-dependent è una regola generale da cercare di seguire
sempre!
Ciao!

 verso qualsiasi assemblatore?
Tutti i compilatori includono un assemblatore come parte del processo 
di generazione degli eseguibili e tutti quelli che ho avuto di usare 
sono in grado di differenziare file sorgenti in C od assembler a 
seconda dell'estensione del file.  L'estensione '.s' oppure '.S'. per 
esempio, indica al gcc che si tratta si un file in assembler senza 
(estensione .s) o con (estensione .S) direttive di preprocessore.
Analogamente quasi tutti i compilatori hanno un'opzione per generare 
il codice assembler (con o senza ottimizzazione) equivalente.
Quanto alla direttiva 'asm' inclusa nel codice C viene automaticamente 
usata dal compilatore per generare il codice assembler così come 
scritto nel file.  Il codice verrà poi passato, assieme al resto 
generato dal codice C, al programma (od allo step del compilatore) 
assemblatore ('as' nel caso del gcc).
Attenzione però che non tutti i compilatori/assemblatori usano lo 
stesso linguaggio assembler.  Il gcc usa una versione che credo derivi 
dal compilatore Unix delle origini, che ha una sintassi alquanto 
diversa dalla sintass dell'assemblatore Intel usata nei compilatori 
Microsoft.
Sinceri auguri per un Felice Anno Nuovo.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >

Ciao!
Hai ragione, in effetti volevo provare ambedue le soluzioni, per� non
saprei come scrivvere moduli in asm da linkare successivamente, per il
fatto che dovrei dare delle direttive all'assemblatore di cui, ora,
non vorrie occuparmi (tipo: modelli di memoria...).
Grazie,ciao!

Giovanni
CIao, in effetti ho sentito che gcc usa una sintassi un p�
sua...dev'essere quella AT&T degli inizi, in effetti...
Grazie degl iauguri, che ricambio.
CIao!