我最近升级到Windows 8.1并尝试连接我的Galaxy S4.我安装了:
当我将设备插入电脑时,在PC设备管理器上没有任何事情发生,并且电话说低功率充电请使用推荐的电缆.我正在使用的电缆是手机附带的电缆,当我在Windows XP上安装时,一切都按预期运行.此外,插入设备时,这是adb在查找设备时的输出:
C:\Users\Ken\Desktop\adt-bundle-windows-x86_64-20131030\sdk\platform-tools>adb k
ill-server
C:\Users\Ken\Desktop\adt-bundle-windows-x86_64-20131030\sdk\platform-tools>adb s
tart-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
C:\Users\Ken\Desktop\adt-bundle-windows-x86_64-20131030\sdk\platform-tools>adb d
evices
List of devices attached
C:\Users\Ken\Desktop\adt-bundle-windows-x86_64-20131030\sdk\platform-tools>
Run Code Online (Sandbox Code Playgroud)
在这一点上,我很确定这是与Windows 8.1和galaxy usb驱动程序的兼容性问题.但是,我一直在研究没有运气的日子.手机的Android版本和型号分别为4.3和SCH-I545.
谢谢您的帮助 :)
我正在浏览K&R的书,其中一个练习的答案让我很烦恼.
在解决方案手册中,练习1-22声明了一个char数组:
#define MAXCOL 10
char line[MAXCOL];
Run Code Online (Sandbox Code Playgroud)
所以我的理解是在C数组中从0 ... n-1开始.如果是这种情况,那么上面的声明应该为长度为10的char数组分配内存,从0开始,以9结束.根据我的理解,更多的点线[10]超出范围?示例程序中的函数最终传递一个等于10的整数值pos,并进行以下比较:
int findblnk(int pos) {
while(pos > 0 && line[pos] != ' ')
--pos;
if (pos == 0) //no blanks in line ?
return MAXCOL;
else //at least one blank
return pos+1; //position after blank
}
Run Code Online (Sandbox Code Playgroud)
如果pos是10而line []的长度只有10,那么数组的边界[pos]是不是超出范围?
可以在C中以这种方式进行比较,还是可能导致分段错误?我确信解决方案手册是对的,这真让我困惑.如有必要,我也可以发布整个程序.谢谢!
感谢快速且非常有帮助的回复,我想这肯定是一个错误.它通过以下分支调用:
else if (++pos >= MAXCOL) {
pos = findblnk(pos);
printl(pos);
pos = newpos(pos);
}
Run Code Online (Sandbox Code Playgroud)
如上所述,MAXCOL定义为10.所以对于这个分支,findblnk(pos)pos将至少传递10.
您是否认为K&R的解决方案手册值得一试或者是否因为有错误的代码示例而闻名?