gcc-#define T Connection_T typedef struct T *T;

问题描述

#define T Connection_T typedef struct T *T;
#define T Connection_T
typedef struct T *T;
这在gcc下是可以编译通过的,但是我想问接下来T代表什么意思阿?是Connection_T还是什么?还是结构体指针?

解决方案

你用gcc什么版本编译的

我得到的是

 Line 2: error: conflicting declaration 'typedef struct Connection_T* Connection_T'

解决方案二:
另外还有没有上下文,还是故意测试编译器行为。这种代码似乎不是为了某种技巧就是毫无道理的。

解决方案三:
接下来T是什么,你直接用它定义一个变量,自己验证一下不就有答案了。
这种代码风格,是不建议的。

解决方案四:
奥,也是,我试试,我看的libzdb的源码,里边出来这么一句,很乱的样子

解决方案五:
看上去是这里来的
http://www.tildeslash.com/libzdb/api-docs/Connection_8h.html

解决方案六:
看上去是这里来的
http://www.tildeslash.com/libzdb/api-docs/Connection_8h.html

解决方案七:
#define T Table_T
typedef struct T *T;
...
#undef T

等价于:

typedef Table_T
Where something is struct Table_T *

http://www.cs.tufts.edu/comp/40/table.html

时间: 2025-01-20 12:19:56

gcc-#define T Connection_T typedef struct T *T;的相关文章

声明-返回局部指针,typedef struct {}*p问题

问题描述 返回局部指针,typedef struct {}*p问题 #include #define ElemType char //节点声明,数据域.左孩子指针.右孩子指针 typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; //先序建立二叉树 BiTree CreateBiTree(){ char ch; BiTree T; scanf("%c",&ch);

C/C++语法知识:typedef struct 用法详解

第一篇:typedef struct与struct的区别 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等). 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明. 至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述. 2. typedef & 结构的问题 当用下面的代码定义一个结构时,编译器

c语言数据结构-typedef struct的运用

问题描述 typedef struct的运用 问题:struct LNode *s,*q;下面代码中的这条语句中的struct是不是可以去掉,如果不行那么struct的作用是?谢谢! typedef char ElemType; typedef struct LNode { ElemType data; struct LNode * next; }LNode,*LinkList; void InsertList(LinkList &L,ElemType x,int i) { int j=1; s

typedef struct ast_config *func(...)

问题描述 typedef struct ast_config *func(...) 2C 怎么理解标题?怎么理解标题?怎么理解标题?怎么理解标题?怎么理解标题? 解决方案 typedef 是定义一个新的类型,Linux内核经常采用的方式,比如:typedef unsigned char U008; 这里是定义U008 为unsigned char类型.其实typedef struct ast_config *func(...) 也是定义一种类型,只是这个类型是结构体指针而已,类型名为func 所

结构体定义 typedef struct 用法详解和用法小结

typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便.具体区别在于:若struct node {}这样来定义结构体的话.在申请node 的变量时,需要这样写,struct node n;若用typedef,可以这样写,typedef struct node{}NODE; .在申请变量时就可以这样写,NODE n;区别就在于使用时,是否可以省去struct这个关键字.   第三篇:struct和typedef struct 分三块来讲述:1 首先:在C中定义一个结

关于define与C 的内存_C 语言

问题1:#define到底存在程序的哪个区? 自己写了一个小程序验证一下第一个问题. 程序代码: <span style="font-size:18px;">#include <stdio.h> #include <STDLIB.H> #define kMAX 100 typedef struct { int ID; char * name; }Student; void test() { return; } //常量区,静态区,堆区,栈区,程序代码

Linux编程之PING的实现

PING(Packet InterNet Groper)中文名为因特网包探索器,是用来查看网络上另一个主机系统的网络连接是否正常的一个工具.ping命令的工作原理是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把回复报文传回给发送者,这有点象潜水艇声纳系统中使用的发声装置.所以,我们想知道我这台主机能不能和另一台进行通信,我们首先需要确认的是我们两台主机间的网络是不是通的,也就是我说的话能不能传到你那里,这是双方进行通信的前提.在Linux下使用指令ping的方法和现象

是我out了,c11标准出炉鸟

 gcc -std=c11 -Wall -O3 -g0 -s -o x.c x 或者  clang -std=c11 -Wall -O3 -g0 -s -o x.c x 来吧! 我是有多无聊啊 测试代码: #include "comm.h" #define MAX_NOTE_LEN 256 typedef struct person { char *name; int age; struct { short power; short magic; }; char note[MAX_NO

翻转链表算法和实现

1 翻转思路 1-1 整体的思路 1-2 详细的思路 2 代码实现 3 运行结果 写个翻转链表算法,刚开始想到一个不错的思路.这个思路运行效率不低,时间复杂度为O(n):可以不用分配额外的节点空间,空间复杂度为O(0).现在把思路整理一下,并实现代码,测试运行结果. 1. 翻转思路 1-1 整体的思路 用一个while顺序遍历这个链表,然后把遍历到每个节点插入到链表头部. 1-2 详细的思路 蓝色箭头即赋值符号,比如在第2个结点的操作: step 2.1:front指针前移一位: step 2.