【C/C++】main()函数详解
C/C++由于有许多不同的编译器,导致main()函数的格式存在一些差别。为了规范,本文只接受ANSI-C在C89/C99中规定的main()函数定义。
个人所感,想到哪写到哪,比较跳跃。
#main()函数定义
main()函数存在以下两种形式:
1 | /* 无参数形式 */ |
C/C++由于有许多不同的编译器,导致main()函数的格式存在一些差别。为了规范,本文只接受ANSI-C在C89/C99中规定的main()函数定义。
个人所感,想到哪写到哪,比较跳跃。
#main()函数定义
main()函数存在以下两种形式:
1 | /* 无参数形式 */ |
编译NDK生成的so库文件需要与cpu架构信息对应。
查看Android手机的cpu架构信息可以在以下两个命令中任选:
sodino:~ sodino$ adb shell getprop | grep cpu
[ro.product.cpu.abi2]: __ [armeabi] __
[ro.product.cpu.abi]: __ [armeabi-v7a] __
单独执行getProp命令的话可以看到非常多的属性信息
#问题
SDK Tools Revision 8以后,如果在AndroidManifest.xml中直接设置
1 | android:debuggable="true" |
肚子饿了,先简单做下记录,吃饱了再来丰富..
为了方便编译生成so及binary,仍然在Eclipse+CDT+NDK环境中构建。
工程结构图如下:
本文将演示如何编译生成直接运行在Android系统的可执行文件。
开发环境:Eclipse + NDK + CDT(脱离eclipse + cdt的编译在文末介绍)
1.在Eclipse的Java视图中,新建一个工程名为”Execute”
2.右击工程-> Android Tools -> Add Native Support…
在弹出的“Add Android Native Support”中填写“library name”为”Execute”。点击“确定”。
Eclipse会自动切换到”C/C++”视图,其工程目录下新增”jni”及”Execute.cpp”文件如下图。
本文记录g++编译生成可执行文件的操作步骤。
1.准备Hello World源码,见下。
1 |
|
使用LinearLayout对水平空间进行分隔时可以使用layout_weight来划分。
今天发现了一个奇怪的现象,如下图,仅做记录。
使用LinearLayout二分水平区域给两个Button,都同时设置layout_weight=”1”.
对layout_width设置为”wrap_content”时,则只对LinearLayout的空余空间进行1:1分配,所以“Noo…oo”按钮会占用的空间更长。
使用Android Studio时,创建工程或导入工程时,卡在一个步骤上一直没反映“Gradle download https://services.gradle.org”。经查,直接在本地安装Gradle即可正常跳过。
在Mac OS下,安装gradle的步骤为即可,效果见下图。
#Android Studio快捷键 记录
编辑区的光标跳转:
跳转到文件开头
mac: fn + command + 左箭头
跳转到文件结尾
mac: fn + command + 右箭头
跳转到当前显示区域开头
mac: fn + command + 上箭头
跳转到当前显示区域结尾
mac: fn + command + 下箭头
#现象
测试同学反映编译出来的release版本的包无法正常运行,debug倒是正常的。
一查日志,发现是类文件saveInSP找不到。如下图:
这种现象一比较,直觉是proguard混淆出错了。来验证直觉吧。