Linux 指针自增在编译时是否优化

问题描述

Linux 指针自增在编译时是否优化
void Test(DATA_17 **pstr)
{
DATA_23 **pdata23 = (DATA_23 **)pstr;
printf(""%pn""*pstr);
++(*pstr);
++(*pdata23);
printf(""%pn""*pstr);
}
这两处打印出的指针应该相差多少,7还是3?
typedef struct DATA_17
{
BYTE by1;
BYTE by2;
BYTE by3;
} DATA_17;
typedef struct DATA_23
{
BYTE by1;
BYTE by2;
BYTE by3;
BYTE by4;
} DATA_23;

解决方案

用sizeof(DATA_23)和DATA_17判断下。
不同的编译器不同的环境不同,不能猜。

解决方案二:
不同的编译选项都可能不同的。

解决方案三:
只能说,以你调试得到的结果为准。

解决方案四:
GCC编译器!!!!

解决方案五:
sizeof(DATA_17)=3sizeof(DATA_23)=4,没有猜结果,是因为我打印出的不对,程序出错了,才来发帖的!!

解决方案六:
“不同的编译选项都可能不同的”大哥可以具体说说吗,我试验了所有优化选项(01-0s),结果都一样

时间: 2024-08-03 23:47:51

Linux 指针自增在编译时是否优化的相关文章

c语言-C语言求助!!!写了一个返回结构体指针的函数,编译时总是提醒没有初始化q,但是初始化了。

问题描述 C语言求助!!!写了一个返回结构体指针的函数,编译时总是提醒没有初始化q,但是初始化了. 下面是源码下载:http://pan.baidu.com/s/1dDhplwH 程序是用C语言写的,VS2013编译. 这是其中使用结构体的定义 这是哈夫曼函数的定义 解决方案 创建的时候可以 -- ,*q = NULL; malloc 之后 memset(q, 0 , sizeof(--)): 解决方案二: 创建的时候可以 -- ,*q = NULL; malloc 之后 memset(q, 0

c语言 结构体 指针-写了一个返回结构体指针的函数,编译时总是提醒没有初始化p,但是初始化了。

问题描述 写了一个返回结构体指针的函数,编译时总是提醒没有初始化p,但是初始化了. 源码 程序是用C写的,VS2013编译. 这是其中使用结构体的定义 这是哈夫曼函数的定义 解决方案 结构体指针的初始化 解决方案二: 哪有你所说的指针p啊 解决方案三: 是否用的c语言方式编译.编译器是否用c++方式编译

关于 Swift 编译时性能优化的一些思考

本文讲的是关于 Swift 编译时性能优化的一些思考, 上周,我读了 @nickoneill 一篇优秀的帖子 Speeding Up Slow Swift Build Times 之后,我发现用一个略不同以往的角度去读Swift代码,并不是很难. 一行之前很简洁的代码,现在却出现了新的问题--它是否应该重构为9行代码来达到更快的编译速度? (nil coalescing 运算符就是一个例子)孰轻孰重?简洁的代码还是对编译器友好的代码? 我觉得,它取决于项目的大小和开发者的想法. 但请等等...

指针-求大神解答一下linux内核编译时键盘驱动模块出现了问题!新手求助!谢谢!

问题描述 求大神解答一下linux内核编译时键盘驱动模块出现了问题!新手求助!谢谢! 编译的时候,就出现了这几个错误,然后我就一直不能编译内核, 估计是指针的问题,但是我又不知道应该如何解决, 已经卡了我差不多两个星期了,一直都解决不了,跪求大神指点! 谢谢! 解决方案 在编译之前,有没有用#cp -f config_tq板的具体的名字 .config复制tq板的配置文件?

图像处理问题:在跑有关图像处理的代码时在linux下编译时出现错误如下

问题描述 图像处理问题:在跑有关图像处理的代码时在linux下编译时出现错误如下 应该怎样修改? 解决方案 源代码有问题,如果不是源代码的问题就是缺少头和库,或者头和库的路径没有被添加到编译器的路径中.先看下出错的源代码文件的出错行,找到对应函数所用的头和库. 解决方案二: 你是不是调用了别的库?我看应该是你代码中用了别的库,但是没有用对.

linux gcc 编译时头文件和库文件搜索路径

一.头文件    gcc 在编译时寻找所需要的头文件 :    ※搜寻会从-I开始    ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH    ※再找内定目录   /usr/include   /usr/local/include   /usr/lib/gcc-lib/i386-linux/2.95.2/include   /usr/lib/gcc-lib/i386-linux/2.95.2/../../../..

运行时和编译时元编程—运行时元编程

原文链接   译文链接   译者:JackWang 运行时和编译时元编程 第一部分 Groovy语言支持两种风格的元编程:运行时元编程和编译时元编程.第一种元编程支持在程序运行时修改类模型和程序行为,而第二种发生在编译时.两种元编程有各自的优缺点,在这一章节我们将详细讨论. 注:译者也是第一次接触Groovy,由于时间和水平有限(姑且让译者使用这个理由吧,对待知识本应该一丝不苟)部分专有名词可能翻译不准确甚至有误(读者阅读的过程中最好能参考原文),恳请读者不吝留言指出,谢谢! 1.运行时元编程

Linux下MySQL源码编译安装(eg:mysql-5.6.27.tar.gz )

Linux下MySQL源码安装(eg:mysql-5.6.27.tar.gz ): 1:准备MySQL源码安装包: mysql-5.6.27.tar.gz.cmake-3.3.2.tar.gz.ncurses-6.0.tar.gz 注:centos请安装: yum install -y ncurses-devel yum install -y perl-Module-Install.noarch 网址: https://cmake.org/download/ ftp://invisible-is

android system-安卓系统编译时,system目录下添加一个文件,为何生成的system.img为什么不包含该文件?

问题描述 安卓系统编译时,system目录下添加一个文件,为何生成的system.img为什么不包含该文件? 安卓系统编译时,在system路径下添加了一些文件,但是编译生成的system.img为什么不包含这些文件? 解决方案 http://www.linuxidc.com/Linux/2014-06/103521.htm