[aspectc-user] keyword volatile and bid structures

Olaf Spinczyk os at aspectc.org
Sun Oct 26 15:35:04 CET 2008


Hello Jörg,

update your ac++ from the subversion repository, compile, and try again.
The problem is fixed.

Best regards,

Olaf

Olaf Spinczyk schrieb:
> Hello Jörg,
>
> this problem is related to the new (and still experimental) static type
> introspection mechanism of AspectC++. I will look into that problem today.
>
> - Olaf
>
> J. Liebig schrieb:
>   
>> Hi everyone,
>>
>> I'm using AspectC++ for static introductions (via slice classes)
>> to existing structures, that contain bitstructures. The weaving
>> works fine, but when I try to compile, it fails with:
>>
>> avr-gcc -o main -mmcu=at90can128 -O2 main.cc     
>> Led.ah: In member function 'const void* LED0::__attr(unsigned int) const':
>> Led.ah:26: error: invalid conversion from 'const volatile void*' to
>> 'const void*'
>> Led.ah:26: error: attempt to take address of bit-field structure member
>> 'LED0::LEDPIN'
>> Led.ah:26: error: attempt to take address of bit-field structure member
>> 'LED0::LEDDDR'
>> Led.ah:26: error: attempt to take address of bit-field structure member
>> 'LED0::LEDPORT'
>>
>> I'm using:
>> ac++ 1.0pre4 svn (Jul  9 2008) and
>> gcc version 4.0.2
>>
>>
>>
>> The examle is as follows:
>> // Led.h
>> #include <inttypes.h>
>>
>> class LED0 {
>> public:
>>         volatile uint8_t _pad[0x20];
>>
>>         // PINA
>>         volatile uint8_t
>>                 LEDPIN  : 1,
>>                                 : 7;
>>
>>         // DDRA
>>         volatile uint8_t
>>                 LEDDDR  : 1,
>>                                 : 7;
>>
>>         // PORTA
>>         volatile uint8_t
>>                 LEDPORT : 1,
>>                                 : 7;
>> };
>>
>>
>> // Led.ah
>> #ifndef __LED_AH__
>> #define __LED_AH__
>>
>> aspect Led {
>>         pointcut ledfunc() = "LED%";
>>
>>         advice ledfunc() : slice class S {
>>         public:
>>                 S() {
>>                         LEDPORT = 0;
>>                         LEDDDR  = 1;
>>                 }
>>
>>                 void on() {
>>                         LEDPORT = 1;
>>                 }
>>
>>                 void off() {
>>                         LEDPORT = 0;
>>                 }
>>         };
>> };
>>
>> #endif // __LED_AH__
>>
>>
>>
>> // main.cc
>> #include "Led.h"
>>
>> int main(int argc, char** argv) {
>>         LED0& l0 = *((LED0*) 0x00);
>>         l0.on();
>>
>>         while(1)
>>                 ;
>> }
>>
>>
>> kind regards
>> Joerg Liebig
>>
>> _______________________________________________
>> aspectc-user mailing list
>> aspectc-user at aspectc.org
>> http://www.aspectc.org/mailman/listinfo/aspectc-user
>>
>>   
>>     
>
> _______________________________________________
> aspectc-user mailing list
> aspectc-user at aspectc.org
> http://www.aspectc.org/mailman/listinfo/aspectc-user
>
>   




More information about the aspectc-user mailing list