Problema su variabile

Una buona giornata ragazzi,
ho un problema su una funzione, per un progetto con Arduino nano, vado a leggere un sensore temperatura DS18B20, ed uso una funzione,
questa

float getTemp() {

	byte data[12];
	byte addr[8];

	if (!ds.search(addr)) {
		ds.reset_search();
		return -1000;
	}

	if (OneWire::crc8(addr, 7) != addr[7]) {
		Serial.println("CRC is not valid!");
		return -1000;
	}

	if (addr[0] != 0x10 && addr[0] != 0x28) {
		Serial.print("Device is not recognized");
		return -1000;
	}

	ds.reset();
	ds.select(addr);
	ds.write(0x44, 1);

	byte present = ds.reset();
	ds.select(addr);
	ds.write(0xBE);

	for (int i = 0; i < 9; i++) {
		data[i] = ds.read();
	}

	ds.reset_search();

	byte MSB = data[1];
	byte LSB = data[0];

	float tempRead = ((MSB << 8) | LSB);
	float TemperatureSum = tempRead / 16;

	return TemperatureSum;
}

il problema e sulla variabile byte present,
sto usando Visual studio con PlatfomIO,
mi dice che la variabile non è usata,
come posso fare per fargliela digerire?

Il compilatore ha ragione, non stai utilizzando quella variabile.

Cambia semplicemente

in

	 ds.reset();

Che significa "fargliela digerire"?... Se non la usi, togli la dichiarazione e basta...

Specifichiamo meglio. Ti avvisa che non la usi, mica segnala errore.

Dipende dalle opzioni di compilazione.
Con ESP32 ad esempio nelle ultime release, questo tipo di warning viene trattato come se fosse un errore.

Si, in effetti dipende dalle versioni ... un tempo, nel file platform.txt, c'erano queste flag di compilazione:

compiler.c.flags.esp32=-mlongcalls -Wno-frame-address -ffunction-sections -fdata-sections -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -ggdb -Os -freorder-blocks -Wwrite-strings -fstack-protector -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -std=gnu99 -Wno-old-style-declaration  -MMD -c
compiler.cpp.flags.esp32=-mlongcalls -Wno-frame-address -ffunction-sections -fdata-sections -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -ggdb -Os -freorder-blocks -Wwrite-strings -fstack-protector -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -std=gnu++11 -fexceptions -fno-rtti  -MMD -c
compiler.S.flags.esp32=-mlongcalls -ffunction-sections -fdata-sections -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -ggdb -Os -freorder-blocks -Wwrite-strings -fstack-protector -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion  -x assembler-with-cpp -MMD -c

... notare i vari -Wno-error ... ce ne è uno che indica chiaramente:

-Wno-error=unused-variable

... probabilmente, nelle nuove versioni, hanno cambiato queste opzioni e ... tocca andare a rimetterle a mano :wink:

Guglielmo

Bella caxxata :joy: :joy:
Se non uso una variabile, dare errore è quantomeno eccessivo :grimacing:
Sono anche convinto che con le ottimizzazioni dei compilatori di oggi, quella variabile neppure viene allocata.

Concordo... e magari fosse solo quello.

Ci sono molti altri warning pressoché inutili che trattano come errore...
Infatti io una delle prime cose che faccio dopo aver aggiornato è rimuovere il flag che ha citato Guglielmo.

Mille grazie a tutti di avermi risposto,
in effetti e solo un avviso, perché il file viene compilato correttamente,
scusatemi ma dove trovo quel flag da togliere,
ho seguito il suggerimento di J-M-L , tutto ok

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.