[an error occurred while processing this directive]
Решил потестить для порядку (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено уни 20 апреля 2006 г. 21:30
В ответ на: Угу. Всё практически так же, как в асме, только другое умолчание. (+) отправлено ReAl 20 апреля 2006 г. 20:28

Берём AVR Studio и создаём два проекта - один на си, другой на асме.

1) Проект на си - шаблон для испытаний спецификатора static


// ***************** -=[ main.c ]=- ******************
int main()
{
return 0;
}

// ***************** -=[ func1.c ]=- ******************

static void func1()
{

}

// ***************** -=[ func2.c ]=- ******************
void func1()
{

}


2) Проект на асме (не пойму как повторить тоже что и на си :) )

// ********** -=[ 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: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru