作者gowrite (gowrite)
看板C_and_CPP
标题[问题] function 中的 function
时间Mon Jul 6 11:51:38 2020
开发平台(Platform): (Ex: Win10, Linux, ...)
linux
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC 10.1
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
n/a
问题(Question):
大家好,最近看到了一张大约 10 年前的考卷,
上面有一个题目,就是一个简单的 C 语言,
大概是这样
int func_1(int a){
int func_2(int num){
return num*num;
}
return func_2(a);
}
int main(){
printf("a = %d\n" , func_1(10) );
return 0;
}
我的问题是,那张考卷上的答案写说「这题的 C 程式无法编译」
,
可是我用 GCC 自己照着考卷写,却可以编译,且答案都正确
那请问这样问题是出在那?
有可能 10 年前的 GCC 无法编译这样的程式吗?
还是有可能是别的可能?
那个答案写错吗?
但是该国家考试的考卷,并没有更正该题错误
所以想问该怎麽理解这个问题??
另外想请问一下
像这样子把 function 写在 function 里面,
在别的语言很常见到这样的写法,
例如:JavaScript
但是在 C 语言里面倒是第一次看到有人这样写,而且还是在考卷上
在之前阅读过的 C 语言的教学书中,没看过有人这样教,
请问 C 语言真的可以这样写吗?
有没有错误的可能?
喂入的资料(Input):
皆正确,没问题
预期的正确结果(Expected Output):
正确
错误结果(Wrong Output):
无,仅讨论观念问题
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
上述程式码
补充说明(Supplement):
n/a
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.121.193.55 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1594007500.A.D9E.html
※ 编辑: gowrite (122.121.193.55 台湾), 07/06/2020 11:52:33
※ 编辑: gowrite (122.121.193.55 台湾), 07/06/2020 11:54:25
1F:→ bibo9901: 这是GCC特有的 07/06 11:58
2F:推 yoche2000: num 只有被 int 没有质 所以num*num才跑不出来吧 07/06 12:10
3F:→ descent: -pedantic-errors 试试这个 option 07/06 13:13
4F:→ TitanEric: 好神 原来gcc这样给过 07/06 18:45
5F:→ TitanEric: 查了一下 还真的 nested functions 07/06 18:45
6F:→ a1u1usul3: 这边好像有讨论过了 #1K-Pqe51 07/06 19:01
7F:→ a1u1usul3: 改用clang编就编不过的东西就不是标准 07/06 19:02
8F:推 plsmaop: gcc 给过不代表是 c 语言特性,请参考 c spec 07/07 18:16
9F:推 dces4212: GNU extension 07/08 02:04
10F:推 CoNsTaR: clang 记得也可以有 closure,不过也是 extension 07/08 09:57
11F:→ CoNsTaR: 在 clang 叫做 blocks,-fblocks 07/08 09:58
12F:→ CoNsTaR: 想要用 clang 编 gcc 的 source 应该可以用 -std=gnu11 07/08 09:59
13F:→ CoNsTaR: 之类的? 07/08 09:59
14F:推 alan23273850: 我记得C不能写nested function欸 07/12 09:41