相关疑难解决方法(0)

801
推荐指数
5
解决办法
49万
查看次数

这种类型的可能性如何?

这个问题中,我遇到了一个非常奇怪的问题typedef:

struct Date {
    int day, month, year;
} typedef date_s;
Run Code Online (Sandbox Code Playgroud)

我一直看到typedef遵循这个'规则':

typedef <existing> <new>;
Run Code Online (Sandbox Code Playgroud)

例如:

typedef unsigned long long ull;
typedef int kph; // speed
typedef void (*alpm_cb_log)(alpm_loglevel_t, const char *, va_list);

typedef int int_t;
typedef char char_t, *char_p, (*fp)(void);
Run Code Online (Sandbox Code Playgroud)

第四个是从这里取的,第五个和第六个来自cppreference


是我怎么会typedefstruct:

typedef struct {
    int a, b, c;
} data;

// and then use it
data Something;
Run Code Online (Sandbox Code Playgroud)

问题是这怎么可能写这样的typedef?它甚至没有意义(至少对我而言). …

c typedef

27
推荐指数
1
解决办法
941
查看次数

我们可以在声明中的任何位置放置"typedef"说明符吗?

typedef说明符的语法:

typedef <existing_name> <alias_name>
Run Code Online (Sandbox Code Playgroud)

例如:

typedef long unsigned int Int;
Run Code Online (Sandbox Code Playgroud)

它工作正常.

但是,如果我typedef在宣言中的任何地方放置,像这样:

long unsigned typedef int Int;
Run Code Online (Sandbox Code Playgroud)

然后,它也工作正常.

为什么?我们typedef可以在宣言中放置任何地方吗?

c c++ typedef language-lawyer storage-class-specifier

17
推荐指数
2
解决办法
415
查看次数

不协调的向后typedef语法

所以我正在阅读关于lambda演算的模板元程序的实现,这是TMP图灵完备性的一个证明.

当我阅读源代码时,我偶然发现了一行(然后更多),如下所示:

template <int Name, typename Value, typename Env>
struct EnvLookup <Name, Binding<Name,Value,Env> > 
{
  Value typedef result ; // Line 84, what is this ?
} ;
Run Code Online (Sandbox Code Playgroud)

我已经习惯了typedef Type Alias;,但Type typedef Alias;对我来说却很陌生.而且它仍然可以用g ++ 4.9.0编写好的版本-std=c++98.

我在Google上找不到关于这种语法的任何文档,也没有关于SO的文档.这是否符合标准?也许是一个g ++扩展?它会融合吗 ?

c++ syntax typedef language-lawyer c++98

6
推荐指数
0
解决办法
44
查看次数