我不是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 有效?
如果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
中需要这样做
private:
drawlist * drawlist_append(p2mem *mem, drawlist_head *head) { ..... }
private
之后的一切都是私密的。
C 没有诸如private
、public
等概念。
此代码依赖于以下内容:
#ifndef private
# define private static
#endif
不幸的是,Microsoft的编译器已经进行了扩展。
我建议你添加
#ifdef private
#undef private
#endif
#define private static
到文件的顶部,或者只是将"私有"替换为"静态"。