C语言是怎么处理反射需求的?

dylen
大海之子 2017-02-19 字数 30

rt

这个版应该有人知道吧?

谢谢啦

51 个回复
eGust
十年 2017-02-19

你咋不问 c 怎么解决解释执行的需求呢?

【 在 dylen (大海之子) 的大作中提到: 】

: rt

: 这个版应该有人知道吧?

: 谢谢啦

: ...................

lsn2000
无法抗拒 2017-02-19

C语言木有反射的概念,你要自己实现一套同步机制,一般会用到函数指针技术

graceman
过眼云烟 2017-02-19

直接撸袖子动手干内存,为毛还需要反射?

【 在 dylen (大海之子) 的大作中提到: 】

: rt

: 这个版应该有人知道吧?

: 谢谢啦

tazz
速度复合弓 2017-02-20

函数指针数组?

【 在 dylen (大海之子) 的大作中提到: 】

: rt

: 这个版应该有人知道吧?

: 谢谢啦

shallowreg
sha 2017-02-22

难道要手写一个java?

ActiveIon
江湖 2017-02-22

啥是反射?多年c语言不知道,是不是很土

【 在 dylen () 的大作中提到: 】

: rt

: 这个版应该有人知道吧?

: 谢谢啦

Bernstein
Berns 2017-03-01

直接手写一个jvm出来处理这事

【 在 dylen 的大作中提到: 】

: rt

: 这个版应该有人知道吧?

: 谢谢啦

wjhtingerx
ca6140 2017-03-11

一直不太理解反射的意义,既然要用到别的库的方法,为啥不正经大大方方的调用呢,要弄个反射的好处是啥?

【 在 dylen 的大作中提到: 】

: rt

: 这个版应该有人知道吧?

: 谢谢啦

xl1312
芥末 2017-03-12
ylh1969
没谱 09月13日

这个已经有了解决方案,先mark一下。

e729
Dreamroom 09月15日

编码的时候不知道调哪个

【 在 wjhtingerx 的大作中提到: 】

: 一直不太理解反射的意义,既然要用到别的库的方法,为啥不正经大大方方的调用呢,要弄个反射的好处是啥?

: 【 在 dylen 的大作中提到: 】

: : rt

wjhtingerx
ca6140 09月15日

反射为啥就知道了?

【 在 e729 的大作中提到: 】

: 编码的时候不知道调哪个

flw
帅五进九 09月16日

不难吧。

维护一个符号表就可以了。

.COM 这些不都是 C 接口。

【 在 dylen (大海之子) 的大作中提到: 】

: rt

: 这个版应该有人知道吧?

: 谢谢啦

littleSram
littleSram 09月16日

反射在JAVA里通常用来看class的定义,比如成员变量的名字和类型,

于是到了c里,就想在运行时拿到struct的成员的类型和名字

【 在 graceman 的大作中提到: 】

: 直接撸袖子动手干内存,为毛还需要反射?

siegfried415
更号2 09月16日

在C语言中,struct是一个面向程序员的概念,在编译好的代码中struct只是一小段连续的内存,访问struct成员只是是用内存地址+成员偏移来完成的,这意味着编译好的代码中完全没有struct的概念,所以在C语言中是无法完成所谓的反射操作的。。。

【 在 littleSram 的大作中提到: 】

: 反射在JAVA里通常用来看class的定义,比如成员变量的名字和类型,

: 于是到了c里,就想在运行时拿到struct的成员的类型和名字

flw
帅五进九 09月16日

这么说也对。

但这并不是说反射就绝对不可行。

其它语言的许多概念在 C 里面都是可以模拟出来的。

还是看需求,看有没有那个必要。

不同语言解决问题的模式不一样,

反射是手段,不是目的。

如果存在什么非得反射才能解决的问题,

那么可以让楼主拿出来讨论一下,

相信 C 语言也可以找到办法的,

并不是说没有 Java 的反射了,就解决不了这类问题了。

【 在 siegfried415 (更号2) 的大作中提到: 】

: 在C语言中,struct是一个面向程序员的概念,在编译好的代码中struct只是一小段连续的内存,访问struct成员只是是用内存地址+成员偏移来完成的,这意味着编译好的代码中完全没有struct的概念,所以在C语言中是无法完成所谓的反射操作的。。。

siegfried415
更号2 09月16日

C语言作为一门严格的编译语言,其核心的逻辑是结构体的长度必须在编译期得到确定,所以根本不存在在动态语言的那种在运行期询问某个语言实体的类型那样的需求。。。

【 在 flw 的大作中提到: 】

: 这么说也对。

: 但这并不是说反射就绝对不可行。

: 其它语言的许多概念在 C 里面都是可以模拟出来的。

: ...................

protossibm
protoss 09月16日

这就是没有困难制造困难也要克服

发自「今日水木 on iPhone 7 Plus」

【 在 dylen 的大作中提到: 】

: rt

: 这个版应该有人知道吧?

: 谢谢啦

: --

littleSram
littleSram 09月16日

我明白,c不存在这玩意,搞JAVA经常写注解,所以必须要这个

【 在 siegfried415 的大作中提到: 】

: 在C语言中,struct是一个面向程序员的概念,在编译好的代码中struct只是一小段连续的内存,访问struct成员只是是用内存地址+成员偏移来完成的,这意味着编译好的代码中完全没有struct的概念,所以在C语言中是无法完成所谓的反射操作的。。。