工作的例子:
Intent intent = new Intent();
intent.putExtra("timespeent", string);
示例(不起作用):
#define DIR(n,d) (d==LEFT?n.left:n.right)
struct node {
struct node*left;
struct node*right;
int value;
};
struct node n;
n.left=malloc( sizeof(struct node) );
n.right=malloc( sizeof(struct node) );
DIR(n,d)->value=26;
(d==1?n.left:n.right)->value=26;
或
#define DIR(mem,d) d==LEFT?mem->left:mem->right
另一种结构:
#define DIR(mem,d) (d==LEFT?(*mem).left:(*mem).right)
在主要功能中,我执行以下操作:
struct Node{
char color;
int height;
Node* parent;
Node* left;
Node* right;
Container*data;
};
错误: 左值作为赋值的左操作数 DIR(mem,d)= temp;
谢谢。
答案 0 :(得分:3)
三元运算符在C中不产生左值。一种替代方法是:
#define DIR(n,d) *((d)==LEFT?&(n).left:&(n).right)
请注意,您应该使用宏参数的所有用法。