相关疑难解决方法(0)

平台无关size_t c中的格式说明符?

我想size_t在C中打印出一个类型的变量,但似乎size_t在不同的体系结构上别名为不同的变量类型.例如,在一台计算机(64位)上,以下代码不会抛出任何警告:

size_t size = 1;
printf("the size is %ld", size);
Run Code Online (Sandbox Code Playgroud)

但在我的另一台机器(32位)上面的代码会产生以下警告消息:

警告:格式'%ld'需要类型'long int*',但参数3的类型为'size_t*'

我怀疑这是由于指针大小的不同,所以在我的64位机器size_t上别名为a long int("%ld"),而在我的32位机器size_t上别名为另一种类型.

是否有专门用于的格式说明符size_t

c size-t platform-independent format-specifiers format-string

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

使用printf打印size_t的正确方法是什么?

Size_t被定义为一个unsigned整数,但它的大小取决于你是在32位还是64位机器上.什么是正确和便携的打印方式size_t

c c++

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

用于size_t类型变量的跨平台格式字符串?

在跨平台的c/c ++项目(Win32,Linux,OSX)中,我需要使用*printf函数来打印一些size_t类型的变量.在某些环境中,size_t是8个字节,而在其他环境中它们是4.在glibc上我有%zd,在Win32上我可以使用%Id.有一种优雅的方式来处理这个问题吗?

c c++ printf cross-platform size-t

32
推荐指数
5
解决办法
2万
查看次数

指针大小不正确

可能重复:
C++中64位计算机的指针大小是多少?

我在大学学习C语言.

我尝试在Windows 7/8上设置编程环境并遇到问题

这段代码:

int main()
  int *p;
  printf("%d",sizeof(p));
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

打印4而不是8(大学打印8).我能做什么?

我的Windows是64位和x64处理器.

c

2
推荐指数
1
解决办法
282
查看次数

可以#define用于替换c中的类型声明吗?

我遇到了一个问题,其中#define用于替换程序中的'int',如下所示

#define type int
int main()
{
 type *a,b;
}
Run Code Online (Sandbox Code Playgroud)

这是有效的吗?虽然它在我试图打印变量b的大小时给了我错误,说b是未声明的.我想知道这背后的具体原因.请告诉我.

有些用户告诉我,我隐藏了部分代码.我没有在上面的代码片段中给出printf语句.下面是printf的代码和给出错误的代码

#define type int;
int main()
{
 type* a, b;
 printf("%d",sizeof(b));
}
Run Code Online (Sandbox Code Playgroud)

c c-preprocessor

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