Hallo!
Hmm. It never occured to me that people would want to put declare objects inside abstractions (I think it's unwise to do so because there's no way to contain the declare object's effects to within the abstraction.)
IMHO using declare in abstractions should be done (reusability ...), otherwise also the declare object itself would make much less sense ...
If you write a library in C you also use #include in this library and not in the main program where you are using the lib.
LG Georg