当前位置: 技术问答>linux和unix
安装了gcc4.0,但是有一个小问题要请教各位高手
来源: 互联网 发布时间:2015-09-24
本文导语: 在编译到guard.cc时,出错。 提示:不能处理 "." 检查发现在pthread.h中定义的PTHREAD_MUTEX_INIT_NP为 {.__data{.kind=????}} 我将PTHREAD_MUTEX_INIT_NP修改为{{0,0,0,????,0}} 编译完成 我想问一问在编译c程序时可以对结构这样初始化: typed...
在编译到guard.cc时,出错。
提示:不能处理 "."
检查发现在pthread.h中定义的PTHREAD_MUTEX_INIT_NP为 {.__data{.kind=????}}
我将PTHREAD_MUTEX_INIT_NP修改为{{0,0,0,????,0}}
编译完成
我想问一问在编译c程序时可以对结构这样初始化:
typedef struct {
int data;
}A;
A a = {
.data = 0;
}
但是在用c++编译时会出错,怪怪!!
用了extern "C"也不行.
如果文件名是.c就行,(.c)只使用C规则编译
提示:不能处理 "."
检查发现在pthread.h中定义的PTHREAD_MUTEX_INIT_NP为 {.__data{.kind=????}}
我将PTHREAD_MUTEX_INIT_NP修改为{{0,0,0,????,0}}
编译完成
我想问一问在编译c程序时可以对结构这样初始化:
typedef struct {
int data;
}A;
A a = {
.data = 0;
}
但是在用c++编译时会出错,怪怪!!
用了extern "C"也不行.
如果文件名是.c就行,(.c)只使用C规则编译
|
.data = 0;
c允许这么做而c++不允许这么做
原因在于C++对struct进行了扩展
struct在c++中类似于class
c++中语法和类型检查更严格
因此gcc和g++编译结果是不同的
我用的是gcc322
c允许这么做而c++不允许这么做
原因在于C++对struct进行了扩展
struct在c++中类似于class
c++中语法和类型检查更严格
因此gcc和g++编译结果是不同的
我用的是gcc322
|
这个……明明就是C99搞出来的一个叫xxxx xxxxx的东西(名字想不起来了,好像是啥liter什么的),C++根本就没支持这个东西,怎么可能用c++还能通过编译?
那个A a = {
a.data = 0
};可以通过吗?我很怀疑……如果你写
A a = { 0 };我还感觉比较可能……
那个A a = {
a.data = 0
};可以通过吗?我很怀疑……如果你写
A a = { 0 };我还感觉比较可能……