[aspectc-user] Some questions
Daniel Lohmann
daniel.lohmann at informatik.uni-erlangen.de
Wed Sep 14 15:50:58 CEST 2005
Francisco Afonso wrote:
> Hi,
>
> I have some questions:
>
> I had a problem of double definition of classes in .ah files when
> compiling. It was solved by including guards (#ifndef …) in .ah files.
> I noticed that in the examples no guards are used. Should them be used
> or inserted by ac++ ?
As with any other header file, aspect files have to be surrounded
manually by include guards. You are right, even if they are required,
many of our examples do not show these include guards. The main reasons
for this (questionable) practice are space limitations for papers and
slides...
>
> Does AspectC++ work with templates? I have a class with templates and
> declared a method as a join point. No error was issued during weaving
> but the code wasn’t affected.
Template support is a major topic on our road map, and still not fully
implemented. We are optimistic that it is possible to give at least call
advice to functions in template classes soon. Weaving in template code
itself (e.g. execution advice or introductions into templates) will take
some more time.
>
> My project has some C code in files .c. Can I use AOP with them? I
> noticed that they are not copied to the destination directory.
AspectC++ can weave in C-Code, the generated output however is always
C++. For this reason, it does not weave into .c files. You may try to
compile the parts of your projects with the C++ compiler, too. Depending
on the quality of the C code this may, however, lead to minor
incompatibilites and require manual intervention. Afterwards a simple
rename of the .c files to .cc / .cpp would do the trick.
> Can I use global variables inside the advice code?
Yes.
> In the around advice without using proceed() how can I return a value?
Either by using the result() pointcut function or the joinpoint API. The
following example shows the latter:
advice execution ( "int foo()") : around() {
*tjp->result() = 4711;
}
Daniel
More information about the aspectc-user
mailing list