在我的当前项目中,我们使用MISRA 2004标准,使用三个GCC编译器版本3.2.3、4.4.2和5.4.0。我们使用严格检查构建,包括pedantic开关、c89标准和许多其他限制。其中之一是所有数据必须在声明时初始化。问题在于,在GCC 3.2.3上,通用的零初始化器{0}只适用于基本单...
我正在处理的代码应该可以在托管和独立环境下构建,对于后者,需要为某些stdlib函数提供私有实现。 只使用普通的工作站/构建服务器上的GCC,我能否可靠地测试这一点?使用GCC编译自由环境 - "-ffreestanding"选项看起来很有前途,但似乎它只禁用了内置函数并正确设置了STDC...
请考虑以下main()函数:int main(int argc, char *argv[]) { return (0); } 使用cc -Wall -Wextra编译时,会生成警告信息“unused parameter”。 当我在函数中不需要使用参数时(例如在int参数没有被使用的信号...
一段代码:long rangeVar = 0; rangeVar = atol(p_value); if (rangeVar >= -2147483648 && rangeVar <= 2147483647) 编译时我收到以下警告: 警告:在ISO C90...
我注意到我们的代码库中有几个地方使用动态扩展数组,即基础数组和元素计数器以及“最大元素”值的组合。 我想要做的是用常见的数据结构和实用程序函数来代替这些数组,出于通常的面向对象编程的原因。数组元素可以是基本数据类型或结构体,我需要快速随机访问元素,并希望实现类型安全。 所以,基本上我想使...
我想在C语言中将double类型转换为float类型,但是想尽可能精确地保留小数点,而不做任何改动... 举个例子,假设我有以下数字: double d = 0.1108; double dd = 639728.170000; double ddd = 345.2345678...
我想声明一个返回指向相同类型函数的指针的函数。 我想使用它来实现像下面这个状态机一样的东西:typedef event_handler_t (*event_handler_t)(event_t*); // compilation error event_handler_t state2(e...
C11第6.8.1节或C99,或C89的第3.6.1节似乎都表明default和case x(其中x是一些常量表达式)都是带标签的语句示例,以及适用于与goto一起使用的identifier:样式标签。 我知道我可以直接在default:或case x:标签后面放置一个identifier:...