2017-01-27 2 views
-3

Я определил массив указателей на функции, инициализировать его непосредственно, и использовать его, например, так:Как назначить функцию PTR на массив функций PTRS (Arduino C++)

typedef void(*offFunction)(void); 
offFunction offFunctionList[2] = {off_1, off_2}; 
: 
offFunctionList[0](); 

Поскольку I нужно динамически изменять функции, я попытался

offFunctionList[0] = off_1; 

, но это дает мне сообщение об ошибке компилятора

'offFunctionList' does not name a type 

только объяснения, которые я нашел для этого центра ошибок вокруг (лексической) видимости, но это не может быть проблемой, поскольку ошибка возникает, даже если присваивание является следующей операцией после объявления ...

Ошибка также появляется когда я копирую материал с this description of function pointers, поэтому я в недоумении.

Что случилось?

+2

MCVE, пожалуйста. Что такое off_t? Где вызывается назначение? Etc ... – SergeyA

+1

Я пробовал ваш код и, похоже, работает нормально, при условии, что off_1 и off_2 фактически определены, а назначение выполняется внутри функции. Можете ли вы привести полный пример? –

+0

@GercoDries Большое спасибо за подсказку - я поставил задание в области определений - глупо меня! Вы хотите включить свой комментарий в ответ, чтобы его приняли? Благодарю, nobi – virtualnobi

ответ

0

Ваш код работает отлично, при условии, что off_1 и off_2 фактически определены, и задание выполняется внутри функции, например, так:

#include <stdio.h> 

typedef void(*offFunction)(void); 

void off_1() { 
    printf("off_1\n"); 
} 
void off_2() { 
    printf("off_2\n"); 
} 

int main() { 
    offFunction offFunctionList[2] = {off_1, off_2};  
    offFunctionList[0](); 
} 
Смежные вопросы