реклама на сайте
подробности

 
 
> Указатель-константа на функцию, !!!!!!!
Alex_rav(зеленин...
сообщение Jun 10 2008, 11:03
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 46
Регистрация: 29-01-07
Из: Саратов
Пользователь №: 24 841



help.gif
Код
__root const void (*FuncTable)(void) = &Init_LED_WH;

ошибка:
Error[Pe144]: a value of type "void (*)()" cannot be used to initialize an entity of type "void const (*)()"

Компилятор IAR 4.42

Хочется разместить указатель на функцию в встроенном флэше

и не зависимо от результатов a14.gif a14.gif a14.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
Dog Pawlowa
сообщение Jun 10 2008, 11:22
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Alex_rav(зеленинький я есть) @ Jun 10 2008, 14:03) *

Поиском искать пробовали?

Код
void fSelfTest(void) {...}

typedef void (*VECTORS)();

const VECTORS process[] =    
{      fSelfTest,

}


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 10 2008, 11:31
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Если - во флэше (т.е. значение не будет меняться), то зачем указатель заводить вообще? Где это нужно используйте напрямую вызов Init_LED_WH
Go to the top of the page
 
+Quote Post
Alex_rav(зеленин...
сообщение Jun 10 2008, 12:09
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 46
Регистрация: 29-01-07
Из: Саратов
Пользователь №: 24 841



2Палыч:
Вообще то задача разместить один указатель не стоит, а стоит задача разместить массив указателей и работать с ним.

2Dog Pawlowa:
Спасибо, все заработало, только не понятно почему Иар не кушал предыдущее объявление. Ведь это же то же самое только разделенное на две строчки.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 10 2008, 12:22
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Alex_rav(зеленинький я есть) @ Jun 10 2008, 15:09) *
Вообще то задача разместить один указатель не стоит, а стоит задача разместить массив указателей и работать с ним.
Так бы и спрашивали...
Цитата(Alex_rav(зеленинький я есть) @ Jun 10 2008, 15:09) *
... только не понятно почему Иар не кушал предыдущее объявление. Ведь это же то же самое только разделенное на две строчки.
Не совсем... К чему относится "const" в первом и втором случае?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 10 2008, 12:24
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Alex_rav(зеленинький я есть) @ Jun 10 2008, 15:09) *
только не понятно почему Иар не кушал предыдущее объявление. Ведь это же то же самое только разделенное на две строчки.
Если вы посмотрите внимательно, то это не то же самое. Вы пытались присвоить указателю на функцию, возвращающую void const указатель на функцию, возвращающую void. Если бы вы написали
Код
__root void (*FuncTable)(void) = &Init_LED_WH;
или
Код
__root void (* const FuncTable)(void) = &Init_LED_WH;
то у вас бы получилось то же самое в одну строчку.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Alex_rav(зеленин...
сообщение Jun 10 2008, 13:37
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 46
Регистрация: 29-01-07
Из: Саратов
Пользователь №: 24 841



Теперь понятно
Спасибо всем ответившим a14.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 23:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01409 секунд с 7
ELECTRONIX ©2004-2016