
[英]It possible to replace file to buffer while pass input to an exe as shell command?
[英]how to pass input file to gcc command? [closed]
我的程序在网上的 gdb 编译器上运行良好,但是在我的 Mac 终端中它给出了分段错误。
我正在使用命令:显然我的程序中的 pthread_create 在终端上编译时给了我错误,所以我添加了 -pthread 标志
gcc -o A3 A3.c -pthread
我的程序还读取一个 integers.txt 文件,该文件与我的 A3.c 文件位于同一目录中。 我尝试在 integers.txt 之前添加一个“/”,但它也不起作用。
fp = fopen("integers.txt" , "r");
此外,我还在程序开始时声明了一个变量数组: int array[]; 这给了我一个警告,但程序在我的在线编译器上运行良好。 这可能会导致 gcc 上的分段错误吗?
此外,我还在程序开始时声明了一个变量数组: int array[];
那不是“可变数组”。 尽管 C 确实有一个叫做变长数组的东西,但它们不能出现在文件范围内,并且数组长度必须由表达式指定。 C 对无界长度数组或长度根据分配的元素数进行调整的数组没有任何意义。
您拥有的是指定不完整(数组)类型的array
声明。 如果您在程序中访问该数组的任何元素,则您有义务确保该类型在翻译单元内由另一个提供数组长度的声明完成。 这大概是编译器警告你的,当然你应该注意那个警告。 如果您不能清楚地阐明为什么忽略给定警告是安全的,那么忽略该警告(对您而言)是不安全的。
但程序在我的在线编译器上运行良好
...这对于未定义的行为(例如您的程序正在锻炼)来说意义不大。 有时,未定义行为的可观察表现可能是“运行良好”,但这并不意味着您可以依赖表现在另一台计算机上、使用另一个编译器甚至在下一次运行中是相同的。
这可能会导致 gcc 上的分段错误吗?
绝对可以。 您没有提供太多代码,因此我们无法判断是否有其他原因可能是有问题的,但是使用仅在您展示时声明的array
正是可能产生段错误的那种事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.