我不是C程序员,我正在尝试将修补程序应用于使用MSVC编译好的项目,但是为* nix提供了补丁。当我尝试使用nmake
编译修补项目时,我收到此错误:
error C2054: expected '(' to follow '__private'
引发此错误的代码是:
private drawlist *
drawlist_append(p2mem *mem, drawlist_head *head)
{
drawlist *d = p2mem_alloc(mem, sizeof(drawlist));
if (!d) return 0;
memset(d, 0, sizeof(drawlist));
d->color = gx_no_color_index;
d->next = 0;
d->prev = head->last;
head->last = d;
(d->prev) ? (d->prev->next = d) : (head->first = d);
return d;
}
通过谷歌搜索,我怀疑MSVC不接受这种声明,但我不知道如何更改代码,因为如上所述,我不是C / C ++程序员。任何人都可以协助如何更改此private
函数调用以使其对MSVC有效吗?
答案 0 :(得分:1)
C ++在声明
中需要这个private:
drawlist * drawlist_append(p2mem *mem, drawlist_head *head) { ..... }
private
之后的所有内容都是私密的。
C没有private
,public
等概念。
答案 1 :(得分:1)
如果drawlist_append
是在class
内声明的成员函数,
你可以尝试:
private:
drawlist* drawlist_append(p2mem *mem, drawlist_head *head)
如果drawlist_append是一个独立的功能,你只需删除private
,你可以试试这个:
drawlist* drawlist_append(p2mem *mem, drawlist_head *head)
另一种可能性是补丁提供者意味着static
而不是private
。
您可以尝试为* nix C添加以下宏:
#define private static
答案 2 :(得分:1)
此代码依赖于以下内容:
#ifndef private
# define private static
#endif
不幸的是,微软的编译器已经有了扩展。
我建议您添加
#ifdef private
#undef private
#endif
#define private static
到文件的顶部,或者只是将“private”替换为“static”。