|  |      1sNullp      2013-01-20 11:12:08 +08:00 是gcc特有的语法应该。 | 
|  |      2gDD      2013-01-20 11:15:06 +08:00  1 | 
|      3Sherlockhlt OP @gDD  原来是C99语法,不过这种写法是应该避免还是应该使用? | 
|  |      4gDD      2013-01-20 11:29:33 +08:00 @Sherlockhlt 说不好,我不是搞C的,既然你说Linux内核都在用,没有理由不用啊,看着多清晰。 | 
|  |      5sinxccc      2013-01-20 11:46:53 +08:00 @Sherlockhlt 归根结底还是一句套话:视项目视团队而定。 | 
|      6liuw      2013-01-20 11:50:10 +08:00 这么好的东西为什么不用? | 
|  |      7ForgotFun      2013-01-20 12:16:31 +08:00 这是GCC的扩展。是内核中常用的赋值方法。 | 
|  |      8ForgotFun      2013-01-20 12:22:57 +08:00 #include <stdio.h> #include <string.h> void main (int argc, char **argv) { int size = atoi(argv[1]); char buffer[size]; printf("sizeof buffer %d\n", sizeof(buffer)); } 在GCC中这程序也是合法。 | 
|      10Sherlockhlt OP @liuw  主要是怕兼容性不好 | 
|  |      13sivacohan PRO 没看明白重点。。。 有时候我也这么写啊。 | 
|      14kneep      2013-01-20 15:26:00 +08:00 via iPhone 这是GNU C的扩展Linux里面大量存在 | 
|  |      16dndx      2013-01-20 16:02:22 +08:00 @fangzhzh  @ForgotFun 这跟 GCC 有什么关系,VLA 是 C99 标准定义的。 https://en.wikipedia.org/wiki/Variable-length_array | 
|  |      19ssword      2013-01-20 16:49:57 +08:00 C99的语法 | 
|      20liuw      2013-01-20 21:07:17 +08:00 | 
|      21BOYPT      2013-01-21 10:57:19 +08:00 @ForgotFun 这些标准都是先出草案再正式标准的,gcc一般在出草案时候就实现了,比如现在的C++0x/C++11,都是gcc首先实现的。 | 
|      22faywong      2013-01-21 22:13:59 +08:00 Linux代码的很多特性都必须由gcc来支持,并且gcc在支持c语言最新标准上最及时。所以建议在Linux平台尽情使用。若是跨平台的项目/兼容过去的陈旧代码,请尽量不要使用。 |