【C/C++】main()函数详解

C/C++由于有许多不同的编译器,导致main()函数的格式存在一些差别。为了规范,本文只接受ANSI-C在C89/C99中规定的main()函数定义。
个人所感,想到哪写到哪,比较跳跃。

#main()函数定义

main()函数存在以下两种形式:

1
2
3
4
5
6
7
8
9
10
11
/* 无参数形式 */
int main( void ) {
...
return 0;
}

/* 带参数形式 */
int main( int argc, char *argv[] ) {
...
return 0;
}

阅读全文

获取Android手机的CPU架构信息

编译NDK生成的so库文件需要与cpu架构信息对应。
查看Android手机的cpu架构信息可以在以下两个命令中任选:

sodino:~ sodino$ adb shell getprop | grep cpu
[ro.product.cpu.abi2]: __ [armeabi] __
[ro.product.cpu.abi]: __ [armeabi-v7a] __
单独执行getProp命令的话可以看到非常多的属性信息

阅读全文

‘Avoid hardcoding the debug mode’的解决

#问题
SDK Tools Revision 8以后,如果在AndroidManifest.xml中直接设置

1
android:debuggable="true"

阅读全文

【NDK】使用dlopen加载动态链接库(lib**.so)

肚子饿了,先简单做下记录,吃饱了再来丰富..

为了方便编译生成so及binary,仍然在Eclipse+CDT+NDK环境中构建。
工程结构图如下:
project.structure

阅读全文

【NDK】编译生成直接运行在Android系统的可执行文件

本文将演示如何编译生成直接运行在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”文件如下图。
jni.folder

阅读全文

g++编译Hello World生成可执行文件

本文记录g++编译生成可执行文件的操作步骤。

1.准备Hello World源码,见下。

1
2
3
4
5
6
7
8
#include <iostream>

using namespace std;

int main () {
cout << "Hello World!" << endl;
return 0;
}

阅读全文

Hexo 使用备忘

markdown 设置页面锚点(Anchor)

效果:点击这里跳转至文章结尾

阅读全文

LinearLayout layout_weight划分区域的两种表现

使用LinearLayout对水平空间进行分隔时可以使用layout_weight来划分。
今天发现了一个奇怪的现象,如下图,仅做记录。
使用LinearLayout二分水平区域给两个Button,都同时设置layout_weight=”1”.

对layout_width设置为”wrap_content”时,则只对LinearLayout的空余空间进行1:1分配,所以“Noo…oo”按钮会占用的空间更长。

阅读全文

‘Gradle download https://services.gradle.org’长时间等待的解决

使用Android Studio时,创建工程或导入工程时,卡在一个步骤上一直没反映“Gradle download https://services.gradle.org”。经查,直接在本地安装Gradle即可正常跳过。
在Mac OS下,安装gradle的步骤为即可,效果见下图。

阅读全文

Android Studio快捷键 记录

#Android Studio快捷键 记录

编辑区的光标跳转:
跳转到文件开头
mac: fn + command + 左箭头
跳转到文件结尾
mac: fn + command + 右箭头
跳转到当前显示区域开头
mac: fn + command + 上箭头
跳转到当前显示区域结尾
mac: fn + command + 下箭头

阅读全文

Proguard混淆Java注解(Annotation)导致方法重名现象说明及解决

#现象

测试同学反映编译出来的release版本的包无法正常运行,debug倒是正常的。
一查日志,发现是类文件saveInSP找不到。如下图:
crash.img
这种现象一比较,直觉是proguard混淆出错了。来验证直觉吧。

阅读全文

HexoArticle

Mou icon

这是第一篇使用makeup编辑的文章。

阅读全文