Gnu Make 在打开头文件中的 Pren 时抛出错误
Gnu Make Throws Error on Opening Pren in Header Files
我从 GNU Make 收到一个奇怪的 "expected declaration" 错误。
inc/pub/teos_config.h:22:28: error: expected declaration specifiers or '...' before '(' token
#define TEOS_SYSUINT ((unsigned)TEOS_SYSINT)
^
这是文件...
#ifndef __TEOS_CONFIG_H__
#define __TEOS_CONFIG_H__
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
#define TEOS_SYSINT int32_t
#define TEOS_SYSUINT ((unsigned)TEOS_SYSINT)
#ifdef __cplusplus
}
#endif
#endif // __TEOS_CONFIG_H__
非常简单。我是 GNU Make 的新手,所以也许我错过了那里的一个开关?
错误是由 C 编译器发出的,而不是由 make
本身发出的。它反映了源代码中的错误。
此外,错误不直接在您提供的 header 中,而是在使用 header 中定义的 TEOS_SYSUINT
宏的 C 源文件中。您已经删除了整个多行错误消息中说明实际错误位置的部分。尽管如此,我可以相当自信地说,当您尝试将该宏用作变量或函数定义中的类型说明符时,就会出现问题。例如,
TEOS_SYSUINT x;
... 扩展为 ...
((unsigned)int32_t) x;
... 这不是变量 x
.
的有效声明
不清楚为什么不这样定义宏,而是:
#define TEOS_SYSUINT uint32_t
更改为很可能会解决您询问的问题。
header 有效,应该可以编译(我已经用 GCC 试过了)。所以这意味着错误来自另一个包含 teos_config.h
.
的文件
这不是 strictly-speaking gnu-make 错误。
但是您通常应该使用 typedef
而不是 define
来完成您正在做的事情
typedef int32_t TEOS_SYSINT;
我从 GNU Make 收到一个奇怪的 "expected declaration" 错误。
inc/pub/teos_config.h:22:28: error: expected declaration specifiers or '...' before '(' token
#define TEOS_SYSUINT ((unsigned)TEOS_SYSINT)
^
这是文件...
#ifndef __TEOS_CONFIG_H__
#define __TEOS_CONFIG_H__
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
#define TEOS_SYSINT int32_t
#define TEOS_SYSUINT ((unsigned)TEOS_SYSINT)
#ifdef __cplusplus
}
#endif
#endif // __TEOS_CONFIG_H__
非常简单。我是 GNU Make 的新手,所以也许我错过了那里的一个开关?
错误是由 C 编译器发出的,而不是由 make
本身发出的。它反映了源代码中的错误。
此外,错误不直接在您提供的 header 中,而是在使用 header 中定义的 TEOS_SYSUINT
宏的 C 源文件中。您已经删除了整个多行错误消息中说明实际错误位置的部分。尽管如此,我可以相当自信地说,当您尝试将该宏用作变量或函数定义中的类型说明符时,就会出现问题。例如,
TEOS_SYSUINT x;
... 扩展为 ...
((unsigned)int32_t) x;
... 这不是变量 x
.
不清楚为什么不这样定义宏,而是:
#define TEOS_SYSUINT uint32_t
更改为很可能会解决您询问的问题。
header 有效,应该可以编译(我已经用 GCC 试过了)。所以这意味着错误来自另一个包含 teos_config.h
.
这不是 strictly-speaking gnu-make 错误。
但是您通常应该使用 typedef
而不是 define
来完成您正在做的事情
typedef int32_t TEOS_SYSINT;