这是合法声明/输出不正确吗[英] is this legal declaration/not correct output

问题描述

嗨!
我已经写了一些和平的代码,但我想知道它对于 ansi-c 是否合法
我自己编译没问题,但是由于我经验不足,
输出不正确我有疑问.感谢您的帮助!

#include <stdio.h>
#include <stdlib.h>

#define __buff(s, c) s_c

int main(){

诠释我;
for(i=0;i<10;i++){
int __buff(*send,i);
}

for(i=0;i<10;i++){
__buff(发送,i) = i;
}
for(i=0;i<10;i++){
printf("%d \n",__buff(send,i));
}

返回0;
}

输出始终为 3...
我的意图是用循环处理几个 int 指针,因为我是
懒得写所有int的...
我想做 X 个 int 指针

int *pointer_1
.....
int *pointer_X

为所有人分配内存
指针_1=malloc(sizeof(*pointer_1))
.....
指针_X=malloc(sizeof(*pointer_X))
用值填充它们
做点什么

如果这种方式不合适,是否存在"黑客"?适合我这种懒惰的程序员?

再次感谢!

L R

推荐答案

sorry...老代码.. :) 这里是"正确的版本"

#include <stdio.h>
#include <stdlib.h>

#define __buff(s, c) s_c

int main(){

诠释我;
int __buff(*发送, 零);
for(i=0;i<4;i++){
int __buff(*send,i);
}
for(i=0;i<4;i++){
__buff(send,i) = malloc(sizeof (__buff(*send,i)));
}

for(i=0;i<4;i++){
__buff(发送,i) = i;
}
for(i=0;i<4;i++){
printf("%d \n",__buff(send,i));
}

返回0;
}


在文章 <46****************************@news.luth.se>,
Carramba <us**@example.net 写道:
>#include <stdio.h>
#include <stdlib.h>

#define __buff(s, c) s_c
这定义了一个类似对象的宏 __buff(),它接受两个参数,
但不管参数是什么,总是发出变量名
s_c .从字面上看,ess下划线cee,与s完全无关
和 c 参数给宏.你的输出行为
观察可以由此推导出来.

您不能只是按照您的想法将参数连接在一起;
可以从宏参数创建新的标识符,但是
它需要更高级的预处理器工作,而替换是
总是在编译时完成,而不是在执行时完成.

我建议您要做的是使用数组,而不是
尝试动态生成新的变量名.
>int main(){

int i;
int __buff(*send, ZERO);
for(i=0;i<4;i++){
int __buff(*send,i);
}
for(i=0;i<4;i++){
__buff(send,i) = malloc(sizeof (__buff(*send,i)));
}

for(i=0;i<4;i++){
__buff(send,i) = i;
}
for(i=0;i<4;i++){
printf("%d \n",__buff(send,i));
}

返回 0;
}
--
"任何人都无权通过
破坏他人的信仰要求经验证据."-- 安·兰德斯

沃尔特·罗伯森 skrev:
在文章<46****************************@news.luth.se>,
Carramba <us**@example.net 写道:
>#include <stdio.h>
#include <stdlib.h>

#define __buff(s, c) s_c

这定义了一个类似对象的宏 __buff(),它接受两个参数,
但不管参数是什么,总是发出变量名
s_c .从字面上看,ess下划线cee,与s完全无关
和 c 参数给宏.你的输出行为
观察可以由此推断.

您不能只是按照您的想法将参数连接在一起;
我很害怕
可以从宏参数创建新的标识符,但是
它需要更高级的预处理器工作,而替换是
总是在编译时完成,而不是在执行时完成.
可以请教一下怎么做吗?
我真的很想学习一些花哨的c东西:)他们可以吗
在编译时创建.
我建议您要做的是使用数组,而不是
尝试动态生成新的变量名.

本文地址:https://www.itbaoku.cn/post/1050402.html