[aspectc-user] keyword volatile and bid structures
J. Liebig
joerg.liebig at st.ovgu.de
Thu Oct 23 14:07:44 CEST 2008
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
More information about the aspectc-user
mailing list