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

 
 
> куча const..., элементарный вопрос по Си
cf7k
сообщение Aug 29 2009, 05:26
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 14-03-06
Из: Санкт-Петербург
Пользователь №: 15 227



Дожился... smile.gif Помогите чайнику.

Итак... вводная: пользую PIC24H, пишу на Си (без плюсов), компилятор - С30, уже скурил весь гугль, учебники по сям...

имею определение интерфейса (структуру указателей на функции):
Код
typedef struct
{
    void (*FunctionPointer)  (char Param);
    int  (*OtherFuncPointer) (int SomeParam);
    ....
} PWInterface, *pPWInterface, **ppPWInterface;

Далее имеется несколько модулей, реализующих некое поведение и предоставляющих указанный интерфейс:
Код
заголовочный файл:
extern const PWInterface const PWMonitor0;

Код
сишный файл с реализацией:
static void    SomeFunc1 (char Param);
static void    SomeFunc2 (int SomeParam);

const PWInterface const PWMonitor0 =
    {
        &SomeFunc1,
        &SomeFunc2,
        ....
    };
ну и далее реализация этих функций.
таких модулей несколько, все предоставляют означенный в начале интерфейс. Т.е. я сознательно выделяю память в памяти программ и пишу дважды const.

Далее собираю интерфейсы в одну кучу:
Код
#include "PWMonitor0.h"
#include "PWMonitor1.h"        
#include "PWMonitor2.h"
....................

const PWInterface    *const PWMonMode1Arr[] = {&PWMonitor0, &PWMonitor0_c, &PWMonitor0_r};
const PWInterface    *const PWMonMode2Arr[] = {&PWMonitor1, &PWMonitor1_r};
const PWInterface    *const PWMonMode3Arr[] = {&PWMonitor2};
Т.е. массивы константных указателей на константные структуры заданного типа.
конструкцию представленную выше компилятор поглощает без проблем, а если же пользую
Код
const pPWInterface    const PWMonMode1Arr[] = ...
получаю warning: initialization discards qualifiers from pointer target type
Вопрос первый: Что именно я недопонимаю? Хотел как лучше (чтоб через typedef... красившее. Вроде корректно определенный тип указателя при определении структуры)...

Продолжу...
далее имея массивы(константные) (константных)указателей на (константные)интерфейсы, собираю их в свою очередь в массив(тоже константный):
Код
const ppPWInterface const Pathways[]    = {&PWMonMode1Arr, &PWMonMode2Arr, &PWMonMode3Arr};

чтоб можно было бы где-то в коде сказать нечто подобное:
result = Pathways[PowerMode][ID]->OtherFuncPointer(somecode);
Вот тут(при определении массива, а не на вызове метода интерфейса) уже имею трижды warning: initialization from incompatible pointer type
Пробовал разные вариации... но, видимо, не все...
Вопрос второй: как сделать правильно?

Компилятор, в общем-то, понимает что я от него хочу. Память распределяет правильно, инициализирует правильно, все компилируется... но этот варнинг... я ж из-за него невыспался. wink.gif

Уфффф... спасибо за терпение дочитавшим сий опус smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- cf7k   куча const...   Aug 29 2009, 05:26
- - Student Pupkin   Я чайник . И помочь ничем не смогу. Но хочу спрос...   Aug 29 2009, 14:26
|- - cf7k   Цитата(Student Pupkin @ Aug 29 2009, 18:2...   Aug 29 2009, 15:18
|- - Student Pupkin   Цитата(cf7k @ Aug 29 2009, 19:18) Хотя эт...   Aug 29 2009, 16:30
|- - cf7k   Цитата(Student Pupkin @ Aug 29 2009, 20:3...   Aug 29 2009, 17:06
|- - Student Pupkin   Цитата(cf7k @ Aug 29 2009, 21:06) Меня ж ...   Aug 29 2009, 18:25
- - Dog Pawlowa   Цитата(cf7k @ Aug 29 2009, 08:26) Дожился...   Aug 29 2009, 15:11
- - AHTOXA   Цитата(cf7k @ Aug 29 2009, 11:26) Кодcons...   Aug 29 2009, 19:06
- - Student Pupkin   Цитата(AHTOXA @ Aug 29 2009, 23:06) Я сил...   Aug 29 2009, 20:23
- - cf7k   Цитата(AHTOXA @ Aug 29 2009, 23:06) Я сил...   Aug 29 2009, 20:35
- - AHTOXA   Цитата(cf7k @ Aug 30 2009, 02:35) Гм... л...   Aug 29 2009, 21:06
|- - cf7k   Цитата(AHTOXA @ Aug 30 2009, 01:06) Со вт...   Aug 29 2009, 21:15
|- - Student Pupkin   Цитата(cf7k @ Aug 30 2009, 01:15) warning...   Aug 29 2009, 21:18
|- - AHTOXA   Цитата(cf7k @ Aug 30 2009, 03:15) warning...   Aug 29 2009, 21:36
|- - Student Pupkin   Цитата(cf7k @ Aug 30 2009, 01:15) КодСо в...   Aug 29 2009, 21:43
|- - AHTOXA   Цитата(Student Pupkin @ Aug 30 2009, 03:4...   Aug 29 2009, 21:54
|- - Student Pupkin   Цитата(AHTOXA @ Aug 30 2009, 01:54) Я име...   Aug 29 2009, 22:01
|- - cf7k   Цитата(Student Pupkin @ Aug 30 2009, 02:0...   Aug 30 2009, 17:46
- - Student Pupkin   Ну а если так: Код/* Вводим тип структура-констант...   Aug 29 2009, 21:13
- - cf7k   Цитата(Student Pupkin @ Aug 30 2009, 01:1...   Aug 29 2009, 21:20


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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:51
Рейтинг@Mail.ru


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