This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to use extern sbit declare?

I declare a variable unsigned char bdata Kde in a.c.

[in file a.c]

unsigned char bdata Kde;

Than I want to use the variable inb.c.
[in file b.c]
#include <stdio.h>
.....
extern unsigned char bdata Kde;
sbit testbit=Kde^1;
void main(void)
{......}

:error C141:.......a.c:syntax error near 'sbit'

why?

Parents Reply Children
  • Keil's doesn't appear a particularly Elegant Solution...

    From what I recall, the bit/sbit/bdata junk was what Intel introduced in the PL/M-51 Compiler. At the time the Keil C compiler was introduced, PL/M-51 was the de-facto standard compiler for the 8051. So, we adopted the Intel standard.

    These legacy language elements are sometimes difficult to kill-off or replace without breaking a lot of existing customer source code.

    Jon

  • The Buck Stops ... way over there! ;-)

  • I totally agree and sympathize. However, adding a feature such as

    /* foo.c */
    bit someBitVar = otherByteVar ^ 1;
    
    /* foo.h */
    extern bit someBitVar;
    probably would not break anyone's code. Right? Don't get me wrong, I think Keil's toolchain is top-notch. Especially after being stranded on PIC Island for my last project.

    - Mark