Las constantes así como ningún otro tipo de variable, función, clase, etc. se cargan en memoria por arte de magia.
En programación existen un orden de ejecución de las rutinas, le llamamos flujo, dicho flujo parte siempre de arriba hacia abajo.
Si al momento de comprobar la existencia de la constante no existe realmente dicha constante es normal que jamás te arroje verdadero, pues la verdad es que no existe.
Para que funcione debes incluir primero el script que hace las definiciones, seguidamente comprobar el contexto con tus rutinas lógicas.
Es lo mas básico en el mundo de la programación, es increíble que algo tan básico sea pasado por alto.
foo.php Código PHP:
define('CANDY', 'Bar');
bar.php Código PHP:
defined('CANDY'); // FALSE
require 'foo.php';
defined('CANDY'); // TRUE
Eso y el sentido común son igual de básicos, no lo olvides.
PDTA: no necesitas "alzar" tu tema replicándote, si nadie lo leyó es porque consideran que es tan básico que hasta tu podrías resolverlo por ti mismo.
Además siempre existe el manual:
http://php.net/define http://php.net/defined