![]() |
1
7
好吧,是/是您打算用C89/90还是C99编写代码? 由于这是您似乎唯一关心的警告,显然您的代码实际上是用C89/90编写的。如果确实如此,并且您计划坚持使用C89/90,那么我将坚持使用严格的C89/90,并将所有声明移动到块的开头。 另一方面,如果您愿意并计划切换到C99,那么“错位”声明就不再是问题了。然后,您主要关心的是平台/编译器支持。MS Visual Studio C编译器是C89/90编译器。这是个问题吗?(考虑到GCC在Windows平台上可用)。 |
![]() |
2
5
如果你想成为
就我个人而言,我喜欢较旧的非混合样式,因为它可以更容易地直观地审核函数使用的内存类型,并在返回之前确定可能需要的空闲()-ing。 |
![]() |
3
2
Visual Studio C编译器不允许混合声明和代码。微软可能永远不会向Visual Studio添加完整的C99支持;在Windows世界中,C还不够重要。 |
![]() |
4
1
我不确定我会改变它。 但是,如果您确实决定要这样做,那就非常简单(也许您应该这样做);只需在开始代码块后立即拥有所有声明。如果以后必须绝对定义它们,请使用另一个嵌套代码块。 |
![]() |
5
1
IVC,Visual C++不允许在C模式中混合声明和代码。 一般来说,Visual C++在C99支持中一直处于滞后状态。然而,最近情况可能有所改善,无论如何,在C++模式下编译代码是可能的。 |
![]() |
6
0
我将消除这种特别的警告,因为混合代码和声明不是一个广泛支持的特性。 事实上,我写的图书馆也有同样的问题。我使用的是可变宏,但似乎更受支持。 为了确保我的库能被其他人真正使用,我将用尽可能多的编译器来测试它。我已经用VisualC++Express和Peles C做了,我会尝试其他(OpenWATCOM,MARS C和LCC-WI32)。 不幸的是,SourceForge不再像几年前那样提供编译器场,我无法在商用Unix编译器上测试它。 |
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |