急急急,大神来帮忙解惑

秋风之刀 2013-10-30 12:17:45
typedef struct{
const char* lpName[];
int nameNum;
} NamesTD;
const char* lpName[];这个能这样写?
编译失败,可是接口上确实这么写的,难道是工程设置的问题?谁来帮忙解惑一下
...全文
182 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋风之刀 2013-11-01
  • 打赏
  • 举报
回复
已经查明方法,这种写法有限制, typedef struct{ const char* lpName[]; int nameNum; } NamesTD; 修改为: typedef struct{ int nameNum; const char* lpName[]; } NamesTD; 就可以了,谢谢各位参与讨论,这是和一个大神讨论得到结果,真是佩服人家的高才,拍马都不及啊。
xianlaowu 2013-10-31
  • 打赏
  • 举报
回复
const char* lpName[] 这条,在接口里面这样写是可以了,它表示一种参数类型。但在一个实际的结构中,不能这样写。因为这样无法确定这个结构的大小,所以编译器会报错。如果改成 const char *lpnam, 倒是可以了编译通过。但使用过程中,你需要时刻判定空指针的问题。
秋风之刀 2013-10-30
  • 打赏
  • 举报
回复
是编译器的问题?windows下如何解决
秋风之刀 2013-10-30
  • 打赏
  • 举报
回复
const char* lpName[]; 一般情况都是有值的,但是现在发现一个接口就是这么定义的,不让修改结构,所以才问问怎么来搞定
pbdwadr 2013-10-30
  • 打赏
  • 举报
回复
用gcc编译,不是g++,更不是vs
SKATE11 2013-10-30
  • 打赏
  • 举报
回复
const char* lpName[]; 这个[]里面得放一个整型常量 表明你申请的大小啊
面币思绮 2013-10-30
  • 打赏
  • 举报
回复
可以,,
秋风之刀 2013-10-30
  • 打赏
  • 举报
回复
是否#include某个文件head文件就可以了?
SKATE11 2013-10-30
  • 打赏
  • 举报
回复
引用 9 楼 max_min_ 的回复:

typedef struct{
const char* lpName[1]; 
int nameNum;
} NamesTD;

//或者
typedef struct{
const char** lpName;
int nameNum;
} NamesTD;
要是楼主无法确定个数的话 可以选择后者
max_min_ 2013-10-30
  • 打赏
  • 举报
回复

typedef struct{
const char* lpName[1]; 
int nameNum;
} NamesTD;

//或者
typedef struct{
const char** lpName;
int nameNum;
} NamesTD;
seanxq 2013-10-30
  • 打赏
  • 举报
回复
作为接口的参数类型是可以的,但不能用来定义变量和结构成员: void calc(char abc[]); void calc(char abc[12]);
Arnis1973 2013-10-30
  • 打赏
  • 举报
回复
数组声明要给常量数指明长度

64,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧