Interrupt issues need some help

I have 3 separate switches that inputs require my uno to wake from sleep. I have been trying to mess around with pin changes, as far as enabling D8 to interrupt, to no avail. I have also found the empty interrupt macros, which would work out great for me because i just need it to signal to wake from powerdownmode. I have attached my sketch which right now has the basic information for the empty interrupt macros. I need my uno to sleep untill d2/d3/d8 is pressed, wake and then perform the task assigned to that pin, then back to sleep mode. If you could please help me figure out a solution to my issue. Thank you in advance for you time and help.

Shane

#include <avr/interrupt.h>
#include <avr/power.h>
#include <avr/sleep.h>

#define EMPTY_INTERRUPT (vector) 

// constants won't change.
const int downbutton = 2;     // downbutton to pin 2
const int upbutton = 3;       // upbutton to pin 3
const int relay1 =  7;       // relay1 to pin 7
const int relay2 =  6;       // relay2 to pin 6
const int relay3 =  5;       //   relay3 to pin 5
const int relay4 =  4;       // relay4 to pin 4
const int accp =  8;         //    car acc power in to pin 8

// variables will change:read for input values
int buttonState2 = 0;
int buttonState3 = 0;
int accps = 0;
int relay4s = 0;

void setup() {
  
  pinMode(accp, INPUT);          // sets the accp pin as input
  pinMode(upbutton, INPUT);        // sets the downbutton pin as input
  pinMode(downbutton, INPUT);      // sets the downbutton pin as input
  pinMode(relay1, OUTPUT);      // sets the relay pin as output
  pinMode(relay2, OUTPUT);      // sets the relay pin as output
  pinMode(relay3, OUTPUT);      // sets the relay pin as output
  pinMode(relay4, OUTPUT);      // sets the relay pin as output
  pinMode(13, OUTPUT);          // set pin 13 as an output so we can use LED to monitor sleep status

  digitalWrite(relay1, LOW);    // Prevents relays from starting up engaged
  digitalWrite(relay2, LOW);    // Prevents relays from starting up engaged
  digitalWrite(relay3, LOW);    // Prevents relays from starting up engaged
  digitalWrite(relay4, LOW);    // Prevents relays from starting up engaged
  digitalWrite(13, HIGH);      // turn pin 13 LED on
}

void loop() {
  
  buttonState3 = digitalRead(upbutton);       //   read the state of the upbutton value
  buttonState2 = digitalRead(downbutton);     //    read the state of the downbutton value
  relay4s = digitalRead (relay4);             //    read the state of relay4
  accps = digitalRead(accp);                  //   read the state of the accps value
  

  if (accps == HIGH && buttonState2 == HIGH) {
    // turn relay 3/4 on w/ relay 1 on for 14 sec:
    digitalWrite(relay3, HIGH);
    digitalWrite(relay4, HIGH);
    digitalWrite(relay1, HIGH); 
    delay(16000);
  }

  if (accps == HIGH && buttonState3 == HIGH) {
    // turn relay 3 off w/ relay 2/4 on for 14 sec then off:
    digitalWrite(relay3, LOW);
    digitalWrite(relay2, HIGH);
    delay (16000);
    digitalWrite(relay4, LOW);
  }
  
  if (buttonState2 == LOW || buttonState3 == LOW){
    // sets relay 1/2 to off if no switches are pressed:
    digitalWrite(relay1, LOW);
    digitalWrite(relay2, LOW);
    }
  
  if (accps == LOW && relay4s == HIGH) {
  // when accp is off for 4.5 mins turn relay 3 off w/ relay 2/4 off after 14 secs:
   
  delay (6000);
  digitalWrite(relay3, LOW);
  digitalWrite(relay2, HIGH);
  delay(16000);
  digitalWrite(relay4, LOW);
}

  delay(1000);
  sleepNow();
}
   
   // Stay awake for 1 second, then sleep.LED turns off when sleeping, then back on upon wake.
void sleepNow(void) {

   // Enable interrupt
  //add EMPTY_INTERRUPT(INT0_vect) pin 2
  //add EMPTY_INTERRUPT(INT1_vect) pin 3
  //add EMPTY_INTERRUPT(PCINT0_vect) pin 8
  
  // Choose our preferred sleep mode
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);

  // Set sleep enable (SE) bit:
  sleep_enable();

  digitalWrite(13, LOW);     // turn LED off to indicate sleep

  // Put the device to sleep:
  sleep_mode();

  // Upon waking up, sketch continues from this point.
  sleep_disable();
}

I think your problem is that you redefined the EMPTY_INTERRUPT macro so that it does nothing useful.

Yes, don't define EMPTY_INTERRUPT, there is already one defined which is better than yours.

maybe EMPTY_INTERRUPT is used as a global macro, not inside a function??? I'm just guessing since i have not used it yet.

This compiles without errors for me on IDE 1.0.6 with Uno as the target:

EMPTY_INTERRUPT(INT0_vect) //pin 2
EMPTY_INTERRUPT(INT1_vect) //pin 3
EMPTY_INTERRUPT(PCINT0_vect) //pin 8

void setup () { }
void loop () { }

EvoX:
Ok it works outside of a function but its conflicting with the rest of my code. How would i just enable these just inside my wake fuction?

Can you explain that more? You can't put ISR functions (or indeed, any functions) inside other functions.

you'll need to explain what you mean by conflict.

It is very possible you need to swap interrupt handlers, disable them or code them to have multiple behaviors based on the state of your program.

It is possible to communicate with your handler a state from your main program.

#define IRQ_DO_NOTHING 0
#define IRQ_DO_STUFF 0

volatile int state = IRQ_DO_NOTHING;

//main code, including loop() and setup() works in a serial manner
sleepnow() {
  state = IRQ_DO_STUFF;
}

// this runs in parrallel and will see state changing.
my_irq_routine(void)
{
  if (state == IRQ_DO_NOTHING) {
    return;
  }
  // do something...
}