以下程序编译为 C 程序:
\n#include <stdlib.h>\n#include <stdio.h>\n\nvoid f(int n, int m, int x[n][m]) {\n printf("x[0][2] = %i\\n",x[0][2]);\n}\n\nint main() {\n int v[][3] = { {0,1,2}, {3,4,5} };\n\n f(2,3,v);\n}\nRun Code Online (Sandbox Code Playgroud)\n然而,当用 g++ 编译为 C++ 时,我有:
\nmain.c:4:29: error: use of parameter outside function body before \xe2\x80\x98]\xe2\x80\x99 token\n void f(int n, int m, int x[n][m]) {\n ^\nRun Code Online (Sandbox Code Playgroud)\n看来C的这个特性在C++中并不存在。是否可以向 g++ 提供任何标志以使其接受代码?
\n看来C的这个特性在C++中并不存在。
正确的。
是否可以向 g++ 提供任何标志以使其接受代码?
不,没有这样的功能允许 VLA 作为参数列表的一部分。您必须将代码编译为 C。
存在其他类似的 gcc 扩展,请参阅:https ://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html
| 归档时间: |
|
| 查看次数: |
183 次 |
| 最近记录: |