[an error occurred while processing this directive]
|
Берём AVR Studio и создаём два проекта - один на си, другой на асме.
1) Проект на си - шаблон для испытаний спецификатора static
// ***************** -=[ main.c ]=- ******************
int main()
{
return 0;
}// ***************** -=[ func1.c ]=- ******************
static void func1()
{}
// ***************** -=[ func2.c ]=- ******************
void func1()
{}
// ********** -=[ main.asm ]=- *************
#include "func1.asm"
#include "func2.asm"main:
rcall Func1
rjmp main// ********** -=[ func1.asm ]=- *************
Func1:ret;
// ********** -=[ func2.asm ]=- *************
Func1:ret;
Если в первом случае static определил видимость только в пределах модуля и проект компильнулся, то на асме я даже не пойму как включаемую метку сделать также "невидимой" и мы получаем
D:\Projects\#avr\#newavr\step3\func2.asm(2): error: Duplicate label: 'Func1'.
Это и понятно, мы же сами включили две идентичных функции в общий листинг. Поэтому я не совсем понял фразу "по умолчанию метка, фактически, static в С-шном понимании." - видимо я привёл не адекватный пример. Растолкуйте.
E-mail: info@telesys.ru