main.c
#include "stackg.h"
int main()
{
return 0;
}
stackg.h
#ifndef STACKG_H
#define STACKG_H
#ifdef __cplusplus
extern "C" {
#endif
typedef struct stack_gt* stack_gt;
stack_gt stkg_init(
void* (*alloc)(const void* data, const int size),
void (*dealloc)(void* data),
void (*copy)(void* data_d, const void* data_s),
const int size
);
void stkg_free(stack_gt s);
int stkg_is_empty(stack_gt s);
int stkg_is_full(stack_gt s);
const int stkg_size(const stack_gt s);
void stkg_clear(stack_gt s);
int stkg_push(stack_gt s, const void* data);
int stkg_pop(stack_gt s, void* data);
int stkg_peek(stack_gt s, void* data);
#ifdef __cplusplus
}
#endif
#endif
上記のプログラムは GCC コンパイラで正常にコンパイルされますが、MSVC2008 では次のエラーが発生します。
error C2040: 'stack_gt *' differs in levels of indirection from 'stack_gt'
コードを何も変更せずにプログラムをコンパイルするには、MSVC に何を指示すればよいですか?
編集
stackg.h
::の 8 行目でエラーが発生しますtypedef struct stack_gt* stack_gt;
編集 2
他に何もないなら、私は一緒に行きますtypedef struct _stack_gt* stack_gt;