gpt4 book ai didi

c - Eclipse CDT 错误 : "Symbol ' XXX' could not be resolved"

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:43 26 4
gpt4 key购买 nike

我有一个嵌入式 C 项目,它在控制台上使用 make 构建和运行得很好,但 Eclipse CDT 给我错误。

main.c中,这个函数使用了一个宏,APP_BUTTON_INIT:

static void buttons_init(void)
{
static app_button_cfg_t buttons[] =
{
{SIGNAL_ALERT_BUTTON, false, NRF_GPIO_PIN_NOPULL, button_event_handler},
{BONDMNGR_DELETE_BUTTON_PIN_NO, false, NRF_GPIO_PIN_NOPULL, NULL}
};

APP_BUTTON_INIT(buttons, sizeof(buttons) / sizeof(buttons[0]), BUTTON_DETECTION_DELAY, false);
}

APP_BUTTON_INIT 宏在 app_button.h 中定义如下:

#define APP_BUTTON_INIT(BUTTONS, BUTTON_COUNT, DETECTION_DELAY, USE_SCHEDULER)                     \
do \
{ \
uint32_t ERR_CODE = app_button_init((BUTTONS), \
(BUTTON_COUNT), \
(DETECTION_DELAY), \
(USE_SCHEDULER) ? app_button_evt_schedule : NULL); \
APP_ERROR_CHECK(ERR_CODE); \
} while (0)

错误是

Symbol 'app_button_evt_schedule' could not be resolved

但该函数在同一个头文件 app_button.h 中进一步定义:

static __INLINE uint32_t app_button_evt_schedule(app_button_handler_t button_handler,
uint8_t pin_no)
{
app_button_event_t buttons_event;

buttons_event.button_handler = button_handler;
buttons_event.pin_no = pin_no;

return app_sched_event_put(&buttons_event, sizeof(buttons_event), app_button_evt_get);
}

我尝试过右键单击项目 -> 索引 -> 重建并刷新所有文件,但没有成功。我将 Eclipse Kepler SR1 与 CDT 8.2.1 一起使用。为什么 Eclipse 看不到这个函数?

Makefile 的第一个操作是这样的(有效):

mkdir _build
"/Users/Eliot/dev/gcc-arm/bin/arm-none-eabi-gcc" -DNRF51822_QFAA_CA -mcpu=cortex-m0 -mthumb -mabi=aapcs -DNRF51 -DBOARD_NRF6310 -DNRF51822_QFAA_CA --std=gnu99 -Wall -Werror -mfloat-abi=soft -DDEBUG -g3 -O0 -I"/Users/Eliot/dev/nrf51822/Include/ble" -I"/Users/Eliot/dev/nrf51822/Include/ble/softdevice" -I"/Users/Eliot/dev/nrf51822/Include/app_common" -I"/Users/Eliot/dev/nrf51822/Include/ble/ble_services" -I"../" -I"/Users/Eliot/dev/nrf51822/Include" -I"/Users/Eliot/dev/nrf51822/Include/gcc" -I"/Users/Eliot/dev/nrf51822/Include/ext_sensors" -M ../main.c -MF "_build/main.d" -MT _build/main.o

我的 CDT 项目配置的包含、符号和工具链的屏幕截图在这里:

https://dl.dropboxusercontent.com/u/12173473/screenshot_cdt_includes.png https://dl.dropboxusercontent.com/u/12173473/screenshot_cdt_symbols.png https://dl.dropboxusercontent.com/u/12173473/screenshot_cdt_toolchain.png

我没有使用工具链,因为我的项目从硬件制造商(Nordic Semiconductor)的示例 CDT 项目开始,并且该项目也没有配置工具链。老实说,我怀疑 CDT 是否找到了正确的 gcc 可执行文件。

最佳答案

您的 Eclipse 项目必须反射(reflect)与您的 makefile 相同的行为。

make 的输出(即调用 gcc 或您正在使用的任何编译器和链接器)与您在 Properties > C/C++ Build > 中的 Eclipse 项目设置相匹配设置。我会开始查看包含路径 (-I) 和定义的符号 (-D),然后查看其他标志。

不幸的是,Eclipse 在从 makefile 导入项目方面不是很聪明,在从外部构建工具解析编译器和链接器设置方面也不是很聪明。

关于c - Eclipse CDT 错误 : "Symbol ' XXX' could not be resolved",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20051550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com