本文介绍了C99便携性挑战的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 这个群体中有几个人认为标准C 不可携带,因为它没有编译器等等。 我建议使用这个程序标准C,我在几个操作系统中编译了来测试这是否真的如此。我的 基本思路是看哪些系统没有编译器 支持标准C. 程序设计生成自然 整数的总和,直到用户提供者参数。例如 电话 总和55 应该产生 前55个整数的总和是1540。 -------------------------------------- ---------在这里切割 #include< stdio.h> #include< stdlib.h> int main(int argc,char * argv []) { int sum = 0; if(argc < 2){ printf(" Usage:sum< number> \ n"); 返回1; } int top = atoi(argv [1]); if(top< = 0) 返回0; if(前100名){ printf("最大值100.输入较低的值\ n); 返回1; } int vla [top]; for(int i = 0 ; i< top; i ++){ vla [i] = i + 1; } for(int j = 0; j< top; j ++){ sum + = vla [j]; } printf(" ;第一个%d整数的总和i s%d \ n",top,sum); 返回0; } --------- ---------------------------------------在这里切割 我已经成功编译了这个程序 (1):windows使用lcc-win。 (2):linux使用gcc -std = c99 (3):AIX使用xlc 我没有任何其他类型的系统可用。如果你有一个上面没有列出的系统,请 尝试编译 这个。 提前致谢。 - jacob navia jacob at jacob point remcomp point fr logiciels / informatique http://www.cs.virginia.edu/~lcc-win32Several people in this group argue that standard Cis not portable since there are no compilers for it, etc.I propose this program in Standard C, that I have compiledin several OSes to test if this is actually true. Mybasic idea is to see which systems do not have a compiler thatsupports standard C.The program is designed to produce the sum of the naturalintegers up to a user provider argument. For instancethe callsum 55should produceThe sum of the first 55 integers is 1540.-----------------------------------------------cut here#include <stdio.h>#include <stdlib.h>int main(int argc,char *argv[]){int sum=0;if (argc < 2) {printf("Usage: sum <number>\n");return 1;}int top = atoi(argv[1]);if (top <= 0)return 0;if (top 100) {printf("Maximum value 100. Enter a lower value\n");return 1;}int vla[top];for (int i=0; i<top;i++) {vla[i] = i+1;}for (int j = 0; j<top;j++) {sum += vla[j];}printf("The sum of the first %d integers is %d\n",top,sum);return 0;}------------------------------------------------cut hereI have already successfully compiled this program under(1): windows using lcc-win.(2): linux using gcc -std=c99(3): AIX using xlcI do not have any other type of system available. Pleaseif you have a system not listed above try to compilethis.Thanks in advance.--jacob naviajacob at jacob point remcomp point frlogiciels/informatique http://www.cs.virginia.edu/~lcc-win32推荐答案 应用程序无法在Windows上使用Visual Studio 2005和 Visual Studio 2008进行编译。 使用C模式(/ TC)进行编译时,应用程序无法编译到期' ''int top'',''int i''以及任何其他变量 声明不在函数开头的声明。我相信这个 是默认的C90行为。 使用C ++模式(/ TP)进行编译时,应用程序无法编译,因为 ''int vla [top]''的声明因为''top''不是一个常量的 表达式,它无法创建一个常量大小为0的数组。 - JensenThe application fails to compile on Windows using Visual Studio 2005 andVisual Studio 2008.When compiling using C mode (/TC) the application fails to compile dueto the declaration of ''int top'', ''int i'' and any other variabledeclaration that is not at the beginning of the function. I believe thisis default C90 behavior.When compiling using C++ mode (/TP) the application fails to compile dueto the declaration of ''int vla[top]'' because ''top'' is not a constantexpression and it is unable to create an array of constant size 0.- Jensen 您可以在Visual Studio中使用英特尔编译器,因此支持C99在Windows下的。 lcc-win也支持C99,而gcc(mingw)也用在那里 ,所以windows系统都是卖的。 - jacob navia jacob at jacob point remcomp point fr logiciels / informatique http://www.cs.virginia.edu/~lcc-win32 (4):FreeBSD使用gcc -std = c99 - Pietro Cerutti(4): FreeBSD using gcc -std=c99--Pietro Cerutti 我无法访问我的FreeBSD和Linux盒子, 但是这里我有一个旧版本的gcc: ----- 8< ---------- 8< ---------- 8< ---------- 8< ----- [XXXXXXXX @ XXXXXXX~I don''t have access to my FreeBSD and Linux boxes,but here I have an old version of gcc:-----8<----------8<----------8<----------8<-----[XXXXXXXX@XXXXXXX ~ 这篇关于C99便携性挑战的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云! 08-31 01:09