SYNTAX:对c函数进行前向声明的正确方法是什么?

问题描述 投票:1回答:1

我目前负责从一台设备获取代码以在另一台设备上运行,并且具有该功能的摘要,这意味着由于该模块的切断,我需要关闭或提供未提供的接口。尝试编译时,我遇到了语法错误,这使我感到困惑。

.h文件中,我在全局范围内找到了这样的前向声明:

void INT_CODE_ATTR fatal_error (unsigned char error_module, unsigned short error_line);

未定义INT_CODE_ATTR的地方。由于我不知道该怎么办,应该这样做:

#define INT_CODE_ATTR
void INT_CODE_ATTR fatal_error (unsigned char error_module, unsigned short error_line);

这给了我错误:

错误:声明未声明任何内容[-fpermissive]

所以我将;更改为{},导致此错误:

错误:'{'令牌之前的预期不合格ID

我以为它与INT_CODE_ATTR有关,因此我将其注释掉,但错误仍然存​​在。另外,整行都用下划线标出(在Eclipse中),它告诉我的只是:“语法错误”。

请澄清一下,我最后一次尝试解决此问题的方法如下:

#define INT_CODE_ATTR
void /*INT_CODE_ATTR*/ fatal_error (unsigned char error_module, unsigned short error_line) {}
c gcc syntax
1个回答
3
投票

您提供的代码段效果很好。那里没问题(一旦您定义了INT_CODE_ATTR)。

运行gcc -E或等效的编译器,以查看预处理器从您的实际代码中得到什么。实际的编译器得到的不是您编写的,而是使输入混乱了。

© www.soinside.com 2019 - 2024. All rights reserved.