我有一些C代码,包括并且被一个C++应用程序使用,这里是重要的部分:
C代码
很不幸,由于出现了“重复的'const'”错误,这段代码无法编译。问题出在
没有更多问题。不幸的是,我无法删除
ifdef __cplusplus
extern "C" {
endif
...
typedef void* problem_type;
...
int problematic_fn_proto( const problem_type const arg );
ifdef __cplusplus
}
endif
很不幸,由于出现了“重复的'const'”错误,这段代码无法编译。问题出在
typedef
上。如果我只是将函数原型更改为:int problematic_fn_proto( const void* const arg );
没有更多问题。不幸的是,我无法删除
typedef
。在这里有解决方案吗?我可以对 C 部分进行其他更改,但是 typedef 及其作为函数参数的使用必须保留。
const problem_type
和problem_type const
都是void* const
的别名,而不是const void* const
。 - cpplearnerconst void* const
意味着地址和地址指向的值都是不可变的,这种说法正确吗? - davepmiller