are pin D2 D4 etc defined? it depends on the Tools>Board selected
try the following code
// ESP8266 are D2 and D4 defined ???
// NO -Tools>Board select Generic ESP8266 module
// YES -Tools>Board select NodeMCU 1.0 (ESP-12 Module)
void setup() {
Serial.begin(115200);
Serial.println("\n\nESP8266 D2 and D4");
Serial.println(D2);
Serial.println(D4);
}
void loop() {}
if compiled with Tools>Boards "Generic ESP8266 module" selected the following compile time errors are displayed
F:\Ardunio\Networking\WiFi\ESP8266\Pins_Defined\Pins_Defined.ino: In function 'void setup()':
F:\Ardunio\Networking\WiFi\ESP8266\Pins_Defined\Pins_Defined.ino:9:18: error: 'D2' was not declared in this scope
9 | Serial.println(D2);
| ^~
F:\Ardunio\Networking\WiFi\ESP8266\Pins_Defined\Pins_Defined.ino:10:18: error: 'D4' was not declared in this scope
10 | Serial.println(D4);
| ^~
exit status 1
Compilation error: 'D2' was not declared in this scope
if compiled with Tools>Boards "NodeMCU 1.0 (ESP-12 Module)" selected it compiles, links, uploads and runs - serial monitor displays
ESP8266 D2 and D4
4
2
I generally use GPIO numbers not D2, D4 etc