请考虑以下程序:(请参阅此处的实时演示).
#include <stdio.h>
struct Test
{
int a;
};
typedef struct Test t;
typedef struct Test t;
int main()
{
t T={9};
printf("%d",T.a);
}
Run Code Online (Sandbox Code Playgroud)
该程序在C11编译器中编译良好,但在C99编译器中编译失败.为什么?是什么原因?我的编译器gcc 4.8.1给出以下警告:
[Warning] redefinition of typedef 't' [-Wpedantic]
[Note] previous declaration of 't' was here
Run Code Online (Sandbox Code Playgroud) 这是一个相当简单的问题,但不知何故很难找到一个简单的答案.
在C++中,(编辑)const修改的结构变量和(编辑:)非const结构变量之间的区别是什么,但结构具有所有const成员?:
typedef struct mystruct {
const int x;
} t1;
const t1 s1;
Run Code Online (Sandbox Code Playgroud)
VS
typedef struct {
int x;
} t2;
const t2 s2;
Run Code Online (Sandbox Code Playgroud)
?(如果答案是"与课程相同",那么请为课程解释或链接到解释.)
在这里,我发现了一个看起来像这样的变量定义:
struct sockaddr *ai_addr;
Run Code Online (Sandbox Code Playgroud)
它似乎是定义一个指向类型变量的指针struct sockaddr
,但是
1)struct是一个关键字
2)struct sockaddr test;
产生错误
aggregate 'sockaddr test' has incomplete type and cannot be defined
Run Code Online (Sandbox Code Playgroud)
(我在gcc 4.7.1下工作)
我是C++,IDE是Visual Studio 2012.我不知道为什么我不能这样做,根本没有任何意义.正如标题所说,我正在尝试将一个结构放在一个类中,但它根本不会让我这样做.我已经尝试将它放在公共,私有,受保护,然后尝试将其置于全球范围内,并且没有任何作用.
class foobar
{
public:
struct foo
{
int ass;
};
foo bar;
bar.ass = 1; //getting a weird error on this line
};
Run Code Online (Sandbox Code Playgroud)
我如何在类中放置结构?谢谢你的帮助
C和C++之间的一个重大区别是结构中的成员函数.C不允许函数作为结构中的成员.我知道一个解决方法是使用函数指针作为结构成员,但这只是函数模拟,它打破了范围规则.
如果C允许实际函数作为结构的成员,那将是一个很好的功能.但我不知道为什么C不这样做.有什么特别的原因吗?
"."之间有什么区别?访问C结构中的数据时," - >"?我几次尝试都找不到任何区别.两者都为我提供了对欲望数据的访问
struct Physics {
static let smallCoin : UInt32 = 0x1 << 1
static let smallCoin2 : UInt32 = 0x1 << 2
static let ground : UInt32 = 0x1 << 3
}
Run Code Online (Sandbox Code Playgroud)
那是什么意思
UInt32 = 0x1 << 1?
和静态让?