相关疑难解决方法(0)

在C中检测64位编译

是否有一个C宏或某种方式,我可以检查我的C程序是否在C编译时编译为64位或32位?

编译器:GCC我需要进行检查的操作系统:Unix/Linux

如果操作系统能够64位,我怎么能检查运行我的程序?

c unix linux gcc

34
推荐指数
5
解决办法
3万
查看次数

sprintf for unsigned _int64

我有以下代码.sprintf中第二个%d的输出始终显示为零.我想我指的是错误的说明符.任何人都可以帮助我获得具有正确值的写字符串.这必须以posix标准实现.感谢您的投入

void main() {
    unsigned _int64 dbFileSize = 99;
    unsigned _int64 fileSize = 100;
    char buf[128];
    memset(buf, 0x00, 128);
    sprintf(buf, "\nOD DB File Size = %d bytes \t XML file size = %d bytes", fileSize, dbFileSize);
    printf("The string is %s ", buf);
    }
Run Code Online (Sandbox Code Playgroud)

输出:

The string is
OD DB File Size = 100 bytes      XML file size = 0 bytes 
Run Code Online (Sandbox Code Playgroud)

c c++ format-specifiers uint64 long-long

19
推荐指数
3
解决办法
4万
查看次数

指针值是什么意思?

考虑下面非常简单的代码:

#include <stdio.h>
#include <stdlib.h>
int main() {

    int* a = (int*) malloc(10 * sizeof(int));
    printf("a = %p, a+1 = %p", a, a+1);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

a = 0x127f190, a+1 = 0x127f194
Run Code Online (Sandbox Code Playgroud)

由于a的大小int是4个字节,我假设从上面的结果开始,指针值就是我RAM内存上一个字节的索引.因此a+1实际上增加asizeof(int) = 4(字节)的值.那是对的吗?

如果是,那么为什么我从程序中获得32位内存地址?这台机器是64位运行64位版本的Ubuntu.如何让程序打印完整的64位地址?我是否必须使用特殊标志进行编译?

c pointers

6
推荐指数
2
解决办法
367
查看次数

在gcc中是否有64位的定义

可能重复:
在C中检测64位编译

我希望我的程序在32位和64位Linux操作系统上运行.所以在我的C代码中,我希望编译器知道何时编译32位和64位架构.所以,我需要这样的东西

#ifdef X64
...
#else
...
#endif
Run Code Online (Sandbox Code Playgroud)

gcc中有没有这样的定义

c 32bit-64bit

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×4

32bit-64bit ×1

c++ ×1

format-specifiers ×1

gcc ×1

linux ×1

long-long ×1

pointers ×1

uint64 ×1

unix ×1