我正在编写一些32位ANSI,用gcc编译,其中我需要打印一些64位有符号和无符号整数。问题是,在gcc 32位C中,int64_t和uint64_t使用ANSI不支持的格式说明符%lld和%llu分别转换为long long int和unsigned long long int。使用inttypes.h中提供的格式说明符也无济于事,因为它们会转换为%lld和%llu。
以下代码无法编译:
#include <stdio.h>
#include <inttypes.h>
int main() {
uint64_t some_int = 123456789;
我有点困惑..。
我有一个嵌入式项目,它使用STM32 HAL库,而后者又使用stm32f072rb CMSIS头文件。
HAL声称是严格的ANSI-C。
The source code of drivers is developed in Strict ANSI-C, which makes it
independent from the development tools. It is checked with CodeSonarTM static
analysis tool. It is fully documented and is MISRA-C 2004 compliant.
我相
当我要求查看cc的当前版本时,我会得到以下内容。
$ cc --version
cc (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$
我想知道的是,使用的是c89、
我正在使用代码块来学习C编程。
当我使用/* */时,程序可以工作,但当我使用//时,程序返回此错误。
expected identifier or ‘(’ before ‘/’ token|
这是main.c
#include <stdio.h>
#include <stdlib.h>
//Ex1
int i;
float p;
char *n;
int main(void)
{
i = 22;
p = 70.0;
n = "Samuel";
printf("%s %d %.2f", n, i,
我有一个使用GCC可以编译的c文件,没有问题,如下所示:
gcc foo.c
但是,使用同一个文件,我收到的错误是使用clang在main中定义了函数
clang foo.c
foo:230:1: error: function definition is not allowed here
{
^
foo.c:241:1: error: function definition is not allowed here
{
^
foo.c:253:1: error: function definition is not allowed here
这些错误实例是代码主部分中新函数的定义。我想知道为什