当前位置:  开发笔记 > 编程语言 > 正文

C99功能被认为是有害的或不受支持的

如何解决《C99功能被认为是有害的或不受支持的》经验,为你挑选了2个好方法。

我通常在C89中编写C代码,现在C99的一些功能(如intxx_t__VA_ARGS__或者snprintf)非常有用,甚至可能至关重要.

在我从C89到C99的更多要求之前,我想知道哪些C99功能得到了广泛支持,哪些功能得不到广泛支持甚至被认为是有害的.

我知道我们可以检查我们的目标编译器支持,但这会缩小我们的支持范围,因为这是开源软件,我更希望得到更广泛的支持.

例如,我们使用Solaris(suncc)编译器和gcc,但可能还有其他编译器,我们可以移动,而我们可以保持兼容性很少的努力.

例如,我从未在Windows上工作,也不了解Windows编译器,但保持Windows兼容性会很好.



1> wallyk..:

goto仍然被认为是有害的.


不知怎的,我已经收集了四张选票.我提出了上面的陈述来增加轻松性,对它背后的概念只有30%认真.

我期望下来的选票来自那些不了解编程语言历史的年轻人.并不是每一个 goto是邪恶的,但是,相对于100%纯正的意大利面条的代码,我在(百万FORTRAN 66线) -它是合理的和富有成效的更换尽可能多的合作goto与结构化报表(报表for,while,do .. while,switch)成为可能.但有时候,goto当它避免复杂性时,它就好了,例如额外的标志变量可以打破多个嵌套循环.


不,当你用C语言编写真实世界的程序时,`goto`是非常有用的.
当您用C语言编写真实世界的程序时,Goto是必要的.
+1为经典参考.
哦,在每个程序中添加一个只是为了惹恼纯粹主义者是很有趣的.但请,请指向下方而不是向上.

2> ChrisV..:

好吧,无论您使用哪种桌面操作系统,gcc基本上都是gcc.

Visual C++主要是一个C++编译器,并不像C99规范那么关注.stdint.h确实声明了你最喜欢的intxx_t宏.__VA_ARGS__是可用的._Bool,_Complex和_Pragma未在Microsoft Visual C++编译器上实现.我很确定%printal/scanf中的字段尚未实现,但VC2010可能会处理它们.snprintf存在,但具有前导下划线和稍微不同的语义.

简短回答:"更容易"的C99功能是在不改变编译器语法或重新配置标准库的情况下实现,VC++更有可能支持它.如果C99和C++之间存在冲突,那么期望C++获胜.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有