文档库 最新最全的文档下载
当前位置:文档库 › android preference的用法

android preference的用法

android preference的用法
android preference的用法

PreferenceActivity用法简介

Java & android 2010-07-07 11:04:53 阅读1237 评论2 字号:大中小订阅

在开发应用程序的过程中我们有很大的机会需要用到参数设置功能,那么在Android应用中,我们如何实现参数设置界面及参数存储呢,下面我们来介绍一下Android中的一个特殊Activity–PreferencesActivity。PreferencesActivity是Android中专门用来实现程序设置界面及参数存储的一个Activity,我们用一个实例来简介如何使用PreferencesActivity。

下图是一个参数设置界面:

下载 (23.65 KB)

2010-5-22 10:49

以此为例我们来介绍一下如何实现这个界面。首先建立一个xml来描述这个界面,文件为res/xml/preferences.xml

xmlns:android="https://www.wendangku.net/doc/ca16072648.html,/apk/res/android">

android:key="CheckBox1"

android:title="CheckBox"

android:summaryOn="某功能: 开启"

android:summaryOff="某功能: 关闭"

android:defaultValue="true"

/>

android:key="CheckBox2"

android:title="CheckBox"

android:summaryOn="某功能: 开启"

android:summaryOff="某功能: 关闭"

android:defaultValue="true"

/>

android:key="ListPreference"

android:title="ListPreference"

android:summary="ListPreference测试"

android:dialogTitle="ListPreference"

android:entries="@array/entries_list_preference"

android:entryValues="@array/entriesvalue_list_preference"

/>

android:key="EditTextPreference"

android:title="EditTextPreference"

android:summary="点击输入"

android:dialogTitle="输入设置"

/>

android:key="RingtonePreference"

android:title="RingtonePreference"

android:summary="选择铃声"

/>

复制代码

这个例子中包括了PreferenceActivity中常见的几种组件,以下为具体介绍及用法:

PreferenceScreen:设置页面,可嵌套形成二级设置页面,用Title参数设置标题。PreferenceCategory:某一类相关的设置,可用Title参数设置标题。CheckBoxPreference:是一个CheckBox设置,只有两种值,true或false,可用Title参数设置标题,用summaryOn和summaryOff参数来设置控件选中和未选中时的提示。

下载 (14.01 KB)

2010-5-22 10:49

ListPreference:下拉框选择控件,用Title参数设置标题,用Summary参数设置说明,点击后出现下拉框,用dialogTitle设置下拉框的标题,下拉框内显示的内容和具体的值需要在res/values/array.xml中设置两个array来表示。图中的array.xml设置如下:

test1

test2

test3

1

2

3

复制代码

下载 (19.72 KB)

2010-5-22 10:49

EditTextPreference:输入框控件,点击后可输入字符串设置。用Title参数设置标题,Summary参数设置说明,dialogTitle参数设置输入框的标题。

下载 (20.68 KB)

2010-5-22 10:49

RingtonePreference:铃声选择框,点击后可选择系统铃声。Title参数设置标题,Summary 参数设置说明,dialogTitle参数设置铃声选择框的标题。

下载 (20.36 KB)

2010-5-22 10:49

以上是PreferenceActivity的xml描述,那么在程序中我们只需要新建一个继承自PreferenceActivity的Activity,然后在主程序中调用就可以了。这个PreferenceActivity中的设置存储是完全自动的,你不需要再用代码去实现设置的存储,PreferenceActivity创建后会自动创建一个配置文件

/data/data/you_package_name/shared_prefs/you_package_name_you_xml_name.xml。上例中自动生成的配置文件如下:

standalone='yes' ?>

12332312

2

content://settings/system/ringtone

复制代码

要取得其中的值可以通过如下的方法:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); value = prefs.getString(”ListPreference”, “unset”);

设计自己的Android Preference

SeekBar Preference

Android提供了Preference供应用可以进行功能设置以及属性配置等操作,检查android.preference可以看到Preference下有若干子类,例如常用的EditTextPreference、CheckBoxPreference、ListPreference等。但是仅仅有这些是不够的。

在我现在的工作当中,应用里有这么一个场景,用户手指在屏幕滑动,应用绘制出移动的轨迹。

熟悉Android API Demo(可以在SDK/platforms/android-1.5/samples下找到)的人一定记得在graphics目录下,有一个FingerPaint的类实现了类似上述功能。但是还远远实现不了我们的需要,–需求是要在Preference中实现挑选颜色和调整粗细。

当然,他山之石可以攻玉,FingerPaint还是提供了不错的例子,尤其是FingPaint中选择颜色所使用的另外一个类ColorPickerDialog基本上具备了我们想要的部分功能。

除了上面提到的FingerPaint之外,还可以从Android的源码中找到可以参考的代码。从framework/base/core/java中,找到android.preference包,可以看到有一个SeekBarPreference的类,–这是一个“烂尾”类,代码未完成,因此被Google打上了@hide 的标签。因此需要稍加完善,才能加以使用。

@Override

protected void onBindDialogView(View view) {

super.onBindDialogView(view);

bar = (SeekBar) view.findViewById(R.id.seekbar);

bar.setOnSeekBarChangeListener(this);

bar.setProgress(barValue);

}

public void setValue(int value) {

barValue = value;

}

public int getValue() {

return barValue;

}

@Override

protected void onDialogClosed(boolean positiveResult) {

if (positiveResult) {

this.getOnPreferenceChangeListener().onPreferenceChange(this, barValue);

}

}

Color Picker Preference

在这个类的改造过程中,override两个父类方法是关键所在,一个是onBindDialogView,另一个是onDialogClosed。

通过第一个方法,我们可以“找到”被当做content view的SeekBar的实例,进而可以获得到其progress。

通过第二个方法,我们可以方便的通知到Listener,告诉它,SeekBar的值有变化。这里我们把SeekBar的值,即progress看做是SeekBarPreference的value。除了这两个方法之外,就是要增加setValue和getValue两个方法了。

如果不看代码的话,就会有疑问:SeekBar是如何进入Diglog的呢?它正式通过DialogPreference的属性android:dialogLayout得以注入:

android:key="@string/setting_handwrite_width_key"

android:title="@string/setting_handwrite_width_title"

android:dialogTitle="@string/setting_handwrite_width_title" android:dialogLayout="@layout/setting_widthseekbar"

android:persistent="true"/>

依此原理,可以举一反三,对于如何实现选择颜色是不是有了思路?

首先实现一个视图,负责展现不同颜色和接收用户选中的颜色,其可以从SeekBarPreference中的内部类ColorPickerView加以改造完成;然后新增一个布局文件,将刚才的视图加入到布局当中;接着继承DialogPreference实现自己的Preference子类ColorPickerPreference;最后在XML文件里增加这个Preference并把刚才的布局文件通过dialogLayout属性加入进去。从而实现了整个功能。

public class SeekBarPreference extends DialogPreference implements SeekBar.OnSeekBarChangeListener {

private static final String TAG = "SeekBarPreference";

private SeekBar bar;

private int barValue;

public SeekBarPreference(Context context, AttributeSet attrs) { super(context, attrs);

}

@Override

protected void onBindDialogView(View view) {

super.onBindDialogView(view);

bar = (SeekBar) view.findViewById(R.id.seekbar);

bar.setOnSeekBarChangeListener(this);

bar.setProgress(barValue);

}

public void setValue(int value) {

barValue = value;

}

public int getValue() {

return barValue;

}

@Override

protected void onDialogClosed(boolean positiveResult) {

if (positiveResult) {

this.getOnPreferenceChangeListener().onPreferenceChange(this, barValue);

}

}

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

Log.d(TAG, "onProgressChanged, progress : " + progress + ", fromUser : " + fromUser);

}

public void onStartTrackingTouch(SeekBar seekBar) {

Log.d(TAG, "onStartTrackingTouch");

}

public void onStopTrackingTouch(SeekBar seekBar) {

barValue = seekBar.getProgress();

}

}

Android studio 开发安装教程

Android studio 安装教程 目录 Android studio 安装教程 (1) 1.JDK 的安装和Java 环境变量的设置 (2) 1.1 JDK 下载地址: (2) 1.2 安装JDK (2) 1.3、环境变量设置 (4) 2.Android studio 的安装 (7) 2.1 开始安装打开android studio 安装文件 (7) 2.2 缓存文件夹配置 (9) 2.3 打开Android studio (11)

1.JDK 的安装和Java 环境变量的设置 1.1 JDK 下载地址: https://www.wendangku.net/doc/ca16072648.html,/technetwork/java/javase/downloads/index.html JDK(Java Development Kit) 是整个Java 的核心,包括一系列Java 开发的东西,安装完毕需要配置一下环境变量。 1.2 安装JDK 安装JDK 本机是64 位,所以,选择jdk-7u21-windows-x64.exe 下载,下载完成后,进行安装

1.3、环境变量设置 1.3.1 我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量: 1.3. 2. JAVA_HOME JDK 的安装路径,这个环境变量本身不存在,需要创建,创建完则可以利用%JAVA_HOME% 作为统一引用路径,其值为:j d k在你电脑上的安装路径。 1.3.4 PATH PATH 属性已存在,可直接编辑。作用是用于配置路径,简化命令的输入,其值 为:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

一看就懂的Android APP开发入门教程

工作中有做过手机App项目,前端和android或ios程序员配合完成整个项目的开发,开发过程中与ios程序配合基本没什么问题,而android各种机子和rom的问题很多,这也让我产生了学习android和ios程序开发的兴趣。于是凌晨一点睡不着写了第一个android程序HelloAndroid,po出来分享给其他也想学习android开发的朋友,这么傻瓜的Android开发入门文章,有一点开发基础的应该都能看懂。 一、准备工作 主要以我自己的开发环境为例,下载安装JDK和Android SDK,假如你没有现成的IDE,你可以直接下载SDK完整包,里面包含了Eclipse,如果有IDE那么你可以滚动到下面选择U SE AN EXISTING IDE,然后安装SDK,如果你的SDK在安装时找不到JDK目录,你可以在系统环境变量里添加JAVA_HOME变量,路径为你的JDK目录,我的IDE是IntelliJ IDEA,都装好以后开始配置IDE增加SDK支持。 首先,打开Android SDK Manager把Android 4.0以上版本的未安装的都打勾装上,根据你个人实际情况,如果你只打算用自己的手机测试,那就把你机子系统一样版本的SDK包装上,下载时间有点长。

然后打开IDE创建新项目,IDEA比较智能,如果你装好了SDK,新建项目里就会出现Andro id的Application Module,选择后右边Project SDK为空,点击New按钮,找到SDK目录确定,下拉列表就会列出已经安装的各个版本的SDK,选择自己需要的版本,如果是第一次设置,IDE会提醒你先设置JDK,根据提示找到JDK目录即可。

C++ #pragma code_seg用法

#pragma code_seg 格式如: #pragma code_seg( [ [ { push | pop}, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] ) 该指令用来指定函数在.obj文件中存放的节,观察OBJ文件可以使用VC自带的dumpbin命令行程序,函数在.obj文件中默认的存放节为.text节,如果code_seg 没有带参数的话,则函数存放在.text节中。 push (可选参数)将一个记录放到内部编译器的堆栈中,可选参数可以为一个标识符或者节名 pop(可选参数)将一个记录从堆栈顶端弹出,该记录可以为一个标识符或者节名identifier(可选参数)当使用push指令时,为压入堆栈的记录指派的一个标识符,当该标识符被删除的时候和其相关的堆栈中的记录将被弹出堆栈 "segment-name" (可选参数)表示函数存放的节名 例如: //默认情况下,函数被存放在.text节中 void func1() {// stored in .text } //将函数存放在.my_data1节中 #pragma code_seg(".my_data1") void func2() {// stored in my_data1 } //r1为标识符,将函数放入.my_data2节中 #pragma code_seg(push, r1, ".my_data2") void func3() {// stored in my_data2 } int main() { } 例如 #pragma code_seg(“PAGE”) 作用是将此部分代码放入分页内存中运行。 #pragma code_seg() 将代码段设置为默认的代码段 #pragma code_seg("INIT") 加载到INIT内存区域中,成功加载后,可以退出内存

常见成语解析及成语故事

常见成语解析及成语故事 换骨夺胎 【注音】huàn gǔ duó tāi 【成语故事】换骨夺胎原是道家传说吃了金丹换去凡骨凡胎后成仙。古代文人借用以前古文的意思用自己的语言去表达,黄庭坚认为这是换骨法,深入研究古文的原意进一步加以刻划形容,这叫夺胎法。也有人说不蹈古人一言一句,用夺胎换骨法可以点铁成金。 【出处】然不易其意而造其语,谓之换骨法;窥入其意而形容之,谓之夺胎法。宋·释惠洪《冷斋夜话·换骨夺胎法》 【解释】比喻诗文活用古人之意,推陈出新。 【用法】作谓语、定语;用于诗文等 【相近词】脱胎换骨、夺胎换骨 【成语举例】他临摹古画有换骨夺胎之妙,当然能够乱真。 提名道姓 【拼音】tí míng dào xìng 【成语故事】王夫人、薛宝钗、林黛玉等在贾母房内聊天,有人汇报史湘云来了,众人迎接,大观园内又多了一位金钗。贾宝玉跑来看史湘云,一见十分快乐,亲热的叫她的名字。王夫人要他不要提名道姓,她们在一起又玩个昏天黑地。 【出处】这里老太太才说这一个,他又来提名道姓的了。清·曹雪芹《红楼梦》第31回

【释义】提、道:说。直呼别人姓名,对人不够尊敬。 【用法】作谓语、宾语;指直呼别人姓名 【相近词】指名道姓、习题名道姓 【反义词】含沙射影 【成语例句】 ◎你得喝醉哟,不然哪里敢!既醉,则挑鼻子弄眼,没必要提名道姓,而以散文诗冷嘲,继以热骂:头发烫得像鸡窝,能孵小鸡么?曲线美,直线美又几个钱一斤?老子的钱是容易挣得?哼!诸如此类,无须管层次清楚与否,但求气势畅利。 ◎设若要摆,也不应该提名道姓。 随遇而安 【注音】:suí yùér ān 【释义】:随:顺从;遇:遭遇。指能顺应环境,在任何境遇中都能满足。 【出处】:清·刘献廷《广阳杂记》一:“随寓而安,斯真隐矣。”清·文康《儿女英雄传》第24回:“吾生有涯,浩劫无涯,倒莫如随遇而安。” 【用法】:偏正式;作谓语、宾语、定语、状语;含褒义;指能顺应环境 【示例】:不过能够~——即有船坐船云云——则比起幻想太多的人们来,可以稍为安稳,能够敷衍下去而已。(鲁迅《两地书》六)【近义词】:与世无争、随俗浮沉

五个字的成语故事分享

五个字的成语故事分享 导读:本文五个字的成语故事分享,仅供参考,如果觉得很不错,欢迎点评和分享。 售胝足之药 【成语故事】从前有人在市场上卖治脚茧药,在门上挂“供御”的招牌,人们讥笑他不诚实。皇帝知道后,派人传唤他,并把他投入监狱。他遇大赦而回家,就又重操旧业,在招牌上面增加“曾经宣唤”4字,以此来招徕顾客。 【出处】昔人有以胝足之药售于市者,辄揭扁于门曰:‘供御。’《厅史》 【解释】胝:手掌或脚掌上的老茧。指卖狗皮膏药骗人。 【用法】作谓语、宾语;指卖狗皮膏药 覆巢无完卵 【成语故事】东汉末年,北海相孔融反对曹操率50万大军征讨刘备与孙权,御史大夫向来与孔融不合,在曹操面前添油加醋,恶意挑拨。曹操大怒,命人逮捕孔融全家,孔融的孩子无动于衷,也不逃跑,说:“大人,岂见覆巢之下复有完卵乎?” 【出处】大人,岂见覆巢之下复有完卵乎?南朝·宋·刘义庆《世说新语·言语》 【解释】复:翻倒。翻倒的鸟窝里不会有完好的卵。比喻灭门大祸,无一幸免。又比喻整体毁灭,个体也不能幸存。

【用法】作定语、分句;比喻整体毁灭,个体不能幸存 【近义词】覆巢破卵 【成语示列】你是知道覆巢无完卵的结局的。 民以食为天 【成语故事】楚汉相争时期,刘邦与项羽在颖阳一带打仗,由于没有后援,刘邦准备放弃敖山粮仓,找谋士郦食其商量。郦食其认为称王要依赖百姓,百姓又依赖粮食。要想赢得战争,必须占据敖仓,才能稳住军心。刘邦赞同并奋勇作战取得了胜利。 【典故】天:比喻赖以生存的最重要的东西。人民以粮食为自己生活所系。指民食的重要。 【释义】天:比喻赖以生存的最重要的东西。人民以粮食为自己生活所系。指民食的重要。 【用法】作宾语、定语;指粮食的重要性 【近义词】国以粮为本 【成语举例】 ◎民以食为天,吃饱肚子是大别山人祖祖辈辈的梦想:"谁让我们吃饱饭,就选谁当县长。" ◎解放几十年来农业还没有从根本上过关的历史教训和现实状况都告诉我们:国以民为本、民以食为天。 ◎民以食为天,国以农为本,这是我国的基本国情,要实现跨世纪的宏伟目标,解决好农业问题至关重要.

C++ #pragma预处理命令

#pragma预处理命令 #pragma可以说是C++中最复杂的预处理指令了,下面是最常用的几个#pragma 指令: #pragma comment(lib,"XXX.lib") 表示链接XXX.lib这个库,和在工程设置里写上XXX.lib的效果一样。 #pragma comment(linker,"/ENTRY:main_function") 表示指定链接器选项/ENTRY:main_function #pragma once 表示这个文件只被包含一次 #pragma warning(disable:4705) 表示屏蔽警告4705 C和C++程序的每次执行都支持其所在的主机或操作系统所具有的一些独特的特点。例如,有些程序需要精确控制数据存放的内存区域或控制某个函数接收的参数。#pragma为编译器提供了一种在不同机器和操作系统上编译以保持C和C++完全兼容的方法。#pragma是由机器和相关的操作系统定义的,通常对每个编译器来说是不同的。 如果编译器遇到不认识的pragma指令,将给出警告信息,然后继续编译。Microsoft C and C++ 的编译器可识别以下指令:alloc_text,auto_inline,bss_seg,check_stack,code_seg,comment,component,conform,const_seg,data_seg,deprecated,fenv_access,float_control,fp_contract,function,hdrstop,include_alias,init_seg,inline_depth,inline_recursion,intrinsic,make_public,managed,message,omp,once,optimize,pack,pointers_to_members,pop_macro,push_macro,region, endregion,runtime_checks,section,setlocale,strict_gs_check,unmanaged,vtordisp,warning。其中conform,init_seg, pointers_to_members,vtordisp仅被C++编译器支持。 以下是常用的pragma指令的详细解释。 1.#pragma once。保证所在文件只会被包含一次,它是基于磁盘文件的,而#ifndef 则是基于宏的。

成语故事(文言文版)阅读

第二十一课时,成语故事(文言文版)阅读 教学目标: 1,了解成语,学习感悟其中的道理 2,积累文言文实词及虚词的用法。 3,掌握文言文常见语法现象。 课堂笔记: 成语故事(文言文版)阅读 引婴投江 有过于江上者,见人方()引婴儿而欲投之江中。婴儿啼。人问其故,曰:“此其父善游!” 其父虽善游,其子岂()遽善游哉?以此任物,亦必悖矣。 刻舟求剑 楚人有涉( )江者,其剑自舟中坠于水。遽( )契其舟,曰:“是( )吾剑之所从坠。”舟止,从其所契者入水求之。 舟已行矣,而剑不行。求剑若此,不亦惑乎!

叶公好龙 叶公好龙,室中雕文( )尽以为龙。于是天龙闻而下之,窥头于牖( ),拖尾于堂。叶公见之,弃而还走( ),失其魂魄,五神无主。 是( )叶公非好龙也,夫似龙而非龙也。 郑人买履 郑人有且置履( )者,先自度( )而置之其坐,至之市而忘操( )之,已得履,乃曰:“吾忘持度。”反( )归取之。及反,市罢( ),遂不得履。 人曰:“何不试之以足?”曰:“宁信度,无自信也。” 自相矛盾 楚人有卖盾与矛者,誉( )之曰:“吾盾之坚,物莫能陷( )也。”又誉其矛曰:“吾矛之利,于物无不陷也。”或曰:“以子( )之矛,陷子之盾,何如?”其人弗能应也。 夫不可陷之盾与无不陷之矛,不可同世而立。 守株待兔 宋人有耕者。田中有株。兔走()触株,折颈而死。因释其耒()而守株,冀()复得兔。兔不可得得,而身为宋国笑。 拔苗助长 宋人有悯()其苗之不长而揠()之者,芒芒然()归,谓其人曰:“今日病矣!予助苗长矣。”其子趋()而往视之,苗则槁矣。 天下之不助苗长者()寡矣。助之长者,揠苗者也。非徒()无益,而又害之。 滥()竽充数 齐宣王使人吹竽,必()三百人。南郭处士请为王吹竽。宣王悦之,廪()食以数百人。宣王死,湣王立。好一一听之。处士逃。 涸辙之鲋

Android开发入门教程

第一篇:安装SDK 这里主要介绍如何安装Android的SDK开发包和配置开发环境。如果你还没有下载SDK,点击下面的链接开始。 Download the Android SDK 系统和软件配置要求 要通过Android SDK中提供的代码和工具进行Android应用程序的开发,需要一个合适的用于开发的电脑和合适的开发环境,具体要求如下: 支持的开发环境 Eclipse Eclipse 3.2,3.3(Europa) Android开发工具插件(可选) 其他的开发环境或者IDE JDK5.0或者JDK6.0(仅有JRE是不够的) 安装SDK 下载好SDK包后,将zip文件解压缩至合适的地方。在下文中,我们默认你的SDK安装目录为$SDK_ROOT 你可以选择将$SDK_ROOT/tools加入到你的路径中 1.Linux下,打开文件~/.bash_profile或者~/.bashrc,找到设定PATH环境变量的一行,将$SDK_ROOT/t ools的完整路径加入其中。如果没有找到设定PATH变量的行,你可以自己添加一行: export PATH=${PATH}:<你的$SDK_ROOT/tools的完全路径> 2.Mac下,在你的home目录中找到文件.bash_profile,和Linux的一样处理。如果还没有在机器上设定这个文件,你可以创建一个.bash_profile文件。 3.Windows下,右键点击【我的电脑】,选择【属性】,在【高级】页中,点击【环境变量】按键,在弹出的对话框中双击“系统变量”中的变量“Path”,将$SDK/tools的完全路径加入其中。 通过将$SDK/tools加入系统路径,在运行adb和其它一些命令行工具时就不需要键入完全路径名了。需要注意到是,当你升级了SDK后,如果安装路径有变动的话,不要忘记了更新你的PATH变量的设置,将其指向变动后的路径。 安装Eclipse插件(ADT) 如果你选择Eclipse作为Android的开发环境,可以安装一个专门为Android定制的插件:Android Deve lopment Tools(ADT),ADT插件集成

#pragma data code ICCAVR的使用

#pragma data:code 在Keil中为了节省数据存储器的空间,通过“code”关键字来定义一个数组或字符串将被存储在程序存储器中: uchar code buffer[]={0,1,2,3,4,5}; uchar code string[]="Armoric" ; 而这类代码移值到ICCAVR上时是不能编译通过的。我们可以通过"const" 限定词来实现对存储器的分配: #pragma data:code const unsigned char buffer[]={0,1,2,3,4,5}; const unsigned char string[]="Armoric"; #pragma data:data 注意: 《1》使用ICCAVR6.31时,#pragma data :code ;#pragma data:data ; 这些语法时在"data:cod"、"data:data"字符串中间不能加空格,否则编译不能通过。 《2》const 在ICCAVR是一个扩展关键词,它与ANSIC标准有冲突,移值到其它的编译器使用时也需要修改相关的地方。 在ICCAVR中对数组和字符串的五种不同空间分配: const unsigned char buffer[]={0,1,2,3,4,5}; //buffer数组被分配在程序存储区中 const unsigned char string[]="Armoric" ; //stringp字符串被分配在程序存储区中 const unsigned char *pt //指针变量pt被分配在数据存储区中,指向程序存储区中的字符类型数据 unsigned char *const pt //指针变量pt被分配在程序存储区中,指向数据存储区中的字符类型数据 const unsigned char *const pt //指针变量pt被分配在程序存储区,指向程序存储区中的字符类型数据 unsigned char *pt //指针变量pt被分配在数据存储区中,指向数据存储区中的数据 请问#pragma data:code和#pragma data:data是什么意思? 前者表示:随后的数据将存贮在程序区,即FLASH区,此区只能存贮常量,比如表格之类。

有关后生可畏成语故事及用法

有关后生可畏成语故事及用法 【解释】后生:青年人,后辈;畏:敬畏,佩服。指青年人势必超过前辈,令人敬畏。 后生可畏成语故事及用法 【读音】hòu shēng kě wèi 【解释】后生:青年人,后辈;畏:敬畏,佩服。指青年人势必超过前辈,令人敬畏。 【出处】《论语·子罕》后生可畏,焉知来者之不如也! 【用法】主谓式;作谓语、宾语、分句;含褒义,称赞年轻人。 【近义词】少年老成、长江后浪推前浪 【反义词】少不更事、乳臭未干 【语法】:主谓式;作谓语、宾语、分句;含褒义,称赞年轻人 故事: 元朝的大臣彻里帖木耳,处理公务精明干练,善于决断。有一年他在浙江任职,正好逢上省城举行科举考试。他目睹了这场考试,从官府到考生都花费了很多钱财,并且免不了有营私舞弊的情况。他暗暗下了决心,待到自己掌握了大权,一定要促使朝廷废除这种制度。后来,他升任相当于副宰相的中书平章政事,便奏告元顺帝,请求废除科举制度。中国科举制度隋唐以来已实行了七百多年,要废除它是一件非常重大的事,在朝中引起了巨大的反响。大师伯颜表示支持,但反对的很多。有位御史坚决反对废除科举制度,他请求顺帝治彻里帖木耳的罪。不料顺帝虽然很昏庸,但对废除科举制度倒是赞成的。所以不但不支持那位御史,反而把他贬到外地去当官。

不久,他命人起草了废除科举制度的诏书,准备颁发下去。书还 未下达,地位略低于平章的参政许有王,又出来反对废除科举制度。 他对伯颜说:“如果废除科举考试制度,世上有才能的人都会怨恨的。”伯颜针锋相对地说:“如果继续实行科举考试制度,世上贪赃 枉法的人还要多。”许有王反驳说:“没有实行科举考试制度的时候,贪赃枉法的人也不是很多吗?”伯颜讽刺他说:“我看中举的人中有用 之材太少,只有你参政一个人能够任用!”许有王不服气,举出很多当 时中举的高官来反驳伯额。伯颜当然不会改变自己的观点,于是两人 争论得非常激烈。第二天,满朝文武被召到祟天门听读皇帝下达的废 除科举制席的诏书,许有王还特地被侮辱性地通知在班首听读。看来,皇帝特意要让这个反对者将诏书听得明白些。许有王心里非常不愿意,但又惧怕得罪皇帝遭到祸害,只好勉强跪在百官前列听读诏书。听读 完诏书后,百官纷纷回府,许有王满脸不高兴地低头走路。 有个名叫普化的御史特地走到他边上,凑着他的耳朵冷嘲热讽他说:“参政,你这下成为过河拆桥的人啦。这话的意思是,你许参政 是靠科举当官的,现在宣读皇上关于废除科举制度诏书,你跪在最前面,似乎是废除科举制度的领头人,就像一个人过了桥后就把桥拆掉 一样。许有王听了又羞又恨,加快步伐离开。之后他借口有病,再也 不上朝了。

pragma的用法

#pragma的用法 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义, 编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #pragma para。其中para为参数,下面来看一些常用的参数。 1)message 参数 message参数是我最喜欢的一个参数,它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为: #pragma message("消息文本") 当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。 当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有 没有正确的设置这些宏, 此时我们可以用这条指令在编译的时候就进行检查。假设我们希望判断自己有没有在源代码的什么地方定义了_X86这个宏, 可以用下面的方法: #ifdef _X86 #pragma message("_X86 macro activated!") #endif 我们定义了_X86这个宏以后,应用程序在编译时就会在编译输出窗口里显示"_86 macro activated!"。 我们就不会因为不记得自己定义的一些特定的宏而抓耳挠腮了。 (2)另一个使用得比较多的pragma参数是code_seg 格式如: #pragma code_seg( ["section-name" [, "section-class"] ] ) 它能够设置程序中函数代码存放的代码段,当我们开发驱动程序的时候就会使用到 它。 (3)#pragma once (比较常用) 只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,这条指令实际上 在VC6中就已经有了, 但是考虑到兼容性并没有太多的使用它。 (4)#pragma hdrstop 表示预编译头文件到此为止,后面的头文件不进行预编译。BCB可以预编译头文件以 加快链接的速度, 但如果所有头文件都进行预编译又可能占太多磁盘空间,所以使用这个选项排除一些头文

成语故事大全

成语故事大全.txt当你以为自己一无所有时,你至少还有时间,时间能抚平一切创伤,所以请不要流泪。能满足的期待,才值得期待;能实现的期望,才有价值。保持青春的秘诀,是有一颗不安分的心。不是生活决定何种品位,而是品位决定何种生活。成语故事大全 南柯一梦 隋末唐初的时候,有个叫淳于尊的人,家住在广陵。他家的院中有一棵根深叶茂的大槐树,盛夏之夜,月明星稀,树影婆婆,晚风习习,是一个乘凉的好地方。 淳于尊过生日的那天,亲友都来祝寿,他一时高兴.多贪了几杯。夜晚,亲友散尽,他一个人带着几分酒意坐在槐树下歇凉,醉眼膝俄,不觉沉沉睡去。 梦中,他到了大槐安国,正赶上京城会试,他报名入场,三场结束,诗文写得十分顺手,发榜时,他高中了第一名。紧接着殿试,皇帝着浮于弊生得一表人才,举止惆院,亲笔点为头名状元,并把公主许配给他为妻,状元公成了驸马郎,一时成了京城的美谈。 婚后,夫妻感情十分美满。淳于尊被皇帝派往南河郡任太守,一呆就是20年。淳于尊在太守任内经常巡行各县,使属下各县的县令不敢胡作非为,很受当地百姓的称赞。皇帝几次想把淳于尊调回京城升迁,当地百姓听说淳于太守离任,纷纷拦住马头,进行挽留。淳于尊为百姓的爱戴所感动,只好留下来,并上表向皇帝说明情况。皇帝欣赏淳于尊的政绩,赏给他不少金银珠宝,以示奖励。有一年,敌兵入侵,大槐安国的将军率军迎敌,几次都被敌兵打得溃不成军。败报传到京城,皇帝震动,急忙召集文武群臣商议对策。大臣们听说前线军事屡屡失利,敌兵逼近京城,凶猛异常,一个个吓得面如土色,你看我,我看你,都束手无策。 皇帝看了大臣的样子,非常生气地说:“你们平田养尊处优,享尽荣华,朝中一旦有事,你们都成了没嘴的葫芦,胆小怯阵,一句话都不说,要你们何用?” 宰相立刻向皇帝推荐淳于尊。皇帝立即下令,让淳于尊统率全国精锐与敌军决战。 淳于尊接到圣旨,不敢耽搁,立即统兵出征。可怜他对兵法一无所知,与敌兵刚一接触,立刻一败涂地,手下兵马被杀得丢盔解甲,东逃西散,淳于尊差点被俘。皇帝震怒,把淳于尊撤掉职务,遣送回家。淳于尊气得大叫一声,从梦中惊醒,但见月上枝头,繁星闪烁。此时他才知道,所谓南河郡,不过是槐树最南边的一枝树干而已。 后生可畏 【读音】 hòu shēng kě wai 【解释】后生:青年人,后辈;畏:敬畏,佩服。指青年人势必超过前辈,令人敬畏。【出处】《论语·子罕》后生可畏,焉知来者之不如也! 【用法】主谓式;作谓语、宾语、分句;含褒义,称赞年轻人。 【近义词】少年老成、长江后浪推前浪 【反义词】少不更事、乳臭未干 【语法】:主谓式;作谓语、宾语、分句;含褒义,称赞年轻人 故事: 元朝的大臣彻里帖木耳,处理公务精明干练,善于决断。有一年他在浙江任职,正好逢上省城举行科举考试。他目睹了这场考试,从官府到考生都花费了许多钱财,并且免不了有

Android移动应用开发基础教程(微课版)-教学大纲

《Android移动应用开发基础教程(微课版)》教学大纲 学时:62 代码: 适用专业: 制定: 审核: 批准: 一、课程的地位、性质和任务 Android移动应用开发基础是普通高等学校计算机科学与技术专业的一门重要的专业基础课。通过本课程的学习,使学生能够在已有的计算机基础知识基础上,对Android移动应用开发有一个系统的、全面的了解、为掌握移动应用开发打下良好的基础;在系统理解和掌握Android移动应用开发基本原理的基础上,了解和掌握移动应用开发的基本原理和方法,具有设计和开发Android移动应用APP的基本能力。 Android移动应用开发是一门实践性非常强的学科,它要求学生在理解和掌握Android移动应用开发语言语法的基础上,充分利用实验课程,在计算机上动手完成程序的编写和调试。 二、课程教学基本要求 1.课程教学以Android移动应用开发方法为主,在教学过程中让学生掌握Android移动应用开发的基本原理和方法。 2.要求在教学过程中合理安排理论课时和实验课时,让学生有充分的使用在计算机上练习理论课程中学到的Android移动应用开发技巧和方法。 三、课程的内容 第1章 Android开发起步 让学生了解Android平台特点、体系架构和版本,掌握如何搭建Android开发环境,熟悉如何创建Android项目和Android编程的日志工具 第2章 Android核心组件:活动 让学生了解Android核心组件之一的活动是什么、活动生命周期,掌握活动基本操作、在活动中使用Intent、在活动之间传递数据、活动的启动模式。 第3章 UI设计 让学生熟练掌握线性布局、相对布局、通用UI组件、消息通知和菜单。 第4章广播机制 让学生了解广播机制,并熟练掌握如何使用广播接收器。 第5章数据存储 让学生熟练掌握Android文件存储、共享存储和SQLite数据库存储。 第6章多媒体 让学生熟练掌握播放多媒体文件、记录声音、使用摄像头和相册。 第7章网络和数据解析

stm32中使用#pragma pack(非常有用的字节对齐用法说明)

#pragma pack(4) //按4字节对齐,但实际上由于结构体中单个成员的最大占用字节数为2字节,因此实际还是按2字节对齐 typedef struct { char buf[3];//buf[1]按1字节对齐,buf[2]按1字节对齐,由于buf[3]的下一成员word a是按两字节对齐,因此buf[3]按1字节对齐后,后面只需补一空字节 word a; //#pragma pack(4),取小值为2,按2字节对齐。 }kk; #pragma pack() //取消自定义字节对齐方式 对齐的原则是min(sizeof(word ),4)=2,因此是2字节对齐,而不是我们认为的4字节对齐。 这里有三点很重要: 1.每个成员分别按自己的方式对齐,并能最小化长度 2.复杂类型(如结构)的默认对齐方式是它最长的成员的对齐方式,这样在成员是复杂类型时,可以最小化长度 3.对齐后的结构体整体长度必须是成员中最大的对齐参数的整数倍,这样在处理数组时可以保证每一项都边界对齐 补充一下,对于数组,比如: char a[3];这种,它的对齐方式和分别写3个char是一样的.也就是说它还是按1个字节对齐. 如果写: typedef char Array3[3]; Array3这种类型的对齐方式还是按1个字节对齐,而不是按它的长度. 不论类型是什么,对齐的边界一定是1,2,4,8,16,32,64....中的一个. 声明: 整理自网络达人们的帖子,部分参照MSDN。 作用: 指定结构体、联合以及类成员的packing alignment; 语法: #pragma pack( [show] | [push | pop] [, identifier], n ) 说明: 1,pack提供数据声明级别的控制,对定义不起作用; 2,调用pack时不指定参数,n将被设成默认值; 3,一旦改变数据类型的alignment,直接效果就是占用memory的减少,但是performance会下降; 语法具体分析: 1,show:可选参数;显示当前packing aligment的字节数,以warning message的形式被显示; 2,push:可选参数;将当前指定的packing alignment数值进行压栈操作,这里的栈是the internal compiler stack,同时设置当前的packing alignment为n;如果n没有指定,则将当前的packing alignment数值压栈; 3,pop:可选参数;从internal compiler stack中删除最顶端的record;如果没有指定n,则当前栈顶record即为新的packing alignment 数值;如果指定了n,则n将成为新的packing aligment数值;如果指定了identifier,则internal compiler stack中的record都将被pop 直到identifier被找到,然后pop出identitier,同时设置packing alignment数值为当前栈顶的record;如果指定的identifier并不存在于internal compiler stack,则pop操作被忽略; 4,identifier:可选参数;当同push一起使用时,赋予当前被压入栈中的record一个名称;当同pop一起使用时,从internal compiler stack 中pop出所有的record直到identifier被pop出,如果identifier没有被找到,则忽略pop操作; 5,n:可选参数;指定packing的数值,以字节为单位;缺省数值是8,合法的数值分别是1、2、4、8、16。 重要规则: 1,复杂类型中各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个类型的地址相同; 2,每个成员分别对齐,即每个成员按自己的方式对齐,并最小化长度;规则就是每个成员按其类型的对齐参数(通常是这个类型的大小)和指定对齐参数中较小的一个对齐; 3,结构体、联合体或者类的数据成员,第一个放在偏移为0的地方;以后每个数据成员的对齐,按照#pragma pack指定的数值和这个数据成员自身长度两个中比较小的那个进行;也就是说,当#pragma pack指定的值等于或者超过所有数据成员长度的时候,这个指定值的大小将不产生任何效果; 4,复杂类型(如结构体)整体的对齐是按照结构体中长度最大的数据成员和#pragma pack指定值之间较小的那个值进行;这样当数据成员为复杂类型(如结构体)时,可以最小化长度; 5,复杂类型(如结构体)整体长度的计算必须取所用过的所有对齐参数的整数倍,不够补空字节;也就是取所用过的所有对齐参数中最大的那个值的整数倍,因为对齐参数都是2的n次方;这样在处理数组时可以保证每一项都边界对齐; 对齐的算法:由于各个平台和编译器的不同,现以本人使用的gcc version 3.2.2编译器(32位x86平台)为例子,来讨论编译器对struct 数据结构中的各成员如何进行对齐的。 在相同的对齐方式下,结构体内部数据定义的顺序不同,结构体整体占据内存空间也不同,如下: 设结构体如下定义: struct A { int a; //a的自身对齐值为4,偏移地址为0x00~0x03,a的起始地址0x00满足0x00%4=0;

300字的成语故事

300字的成语故事 少数民族地区发生叛乱,他认为是贪官与无赖所为,起义军的力量是星星之火可以燎原,下令惩治贪官悍将,迅速平息了叛乱。 【典故】若火之燎于原,不可向迩。 《尚书·盘庚上》【解释】一点点小火星可以烧掉大片原野。 比喻开始时微小,但有远大发展前途的新事物。 【用法】作宾语、定语、分句;用于新生事物【近义词】星火燎原【示例】你不轻视了。 星星之火,可以燎原,不晓得怎么结局呢!张鸿《续孽海花》第57回【成语造句】◎直到1930年初,毛泽东的《星星之火,可以燎原》的问世,才在实际上解决了这个问题。 ◎是什么力量使他们坚信"星星之火,可以燎原",革命必然胜利呢?就是因为共产党人心中铭刻着共产主义的丰碑。 300字的成语故事(二):生公说法,顽石点头【注音】shēng gōng shuō fǎ , wán shí diǎn tóu【成语故事】晋末高僧竺道生15岁就登坛讲法,20岁上庐山讲授佛法,成为江南的佛学大师,他潜心研究刚传入中国的《涅槃经》,参悟到其中的奥妙,得出“人人皆可成佛的理论推断,因此被逐出庐山,他流浪到苏州虎丘山讲法,顽石都为之点头。 【出处】传说晋朝和尚道生法师对着石头讲经,石头都点头了。 比喻精通者亲自来讲解,必能透彻说理而使人感化。 【解释】shēnggōngshuōfǎ,wánshídiǎntóu【用法】作宾语、定语、

分句;用于书面语【相近词】生公说法 武帝在东堂巡游时接见了郤诜,问他自己感觉如何。 郤诜回答说:“臣举贤良对策,为天下第一,犹桂林之一枝,昆山之片玉。 【典故】累迁雍州刺史。 武帝于东堂会送,问诜曰:‘卿自以为何如?’诜对曰:‘臣举贤良对策,为天下第一,犹桂林之一枝,昆山之片玉。 ’《晋书·郤诜传》【解释】昆山:昆冈,古代产玉的地方。 桂花林中的一枝花,昆山中的一块玉。 比喻科举考试中的出类拔萃的佼佼者。 【用法】作宾语、分句;可分开使用【相近词】桂林一枝、昆山片玉300字的成语故事(四):刻画无盐,唐突西施【拼音】kè huà wú yán , táng tū xī shī【成语故事】东晋初年,很有名望的尚书仆射周顗为人特别谦虚。 人们总喜欢把他与当时同样有名望的尚书令乐广相提并论,说他们两人都是才学过人、德高望重。 周顗谦虚地说:“把我与他相比,是亵渎了他,那是刻画无盐、唐突西施了。 【典故】庚亮尝谓顗曰:‘诸人咸以君方乐广。 ’顗曰:‘何乃刻画无盐,唐突西施也。 ’《晋书·周顗传》【释义】刻画:描绘;无盐:战国时齐国的丑女;

#pragma指令用法汇总和解析

#pragma指令用法汇总和解析 一. message 参数。 message 它能够在编译信息输出窗 口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为: #pragma message(“消息文本”) 当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。 当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确的设置这些宏,此时我们可以用这条 指令在编译的时候就进行检查。假设我们希望判断自己有没有在源代码的什么地方定义了_X86这个宏可以用下面的方法 #ifdef _X86 #pragma message(“_X86 macro activated!”) #endif 当我们定义了_X86这个宏以后,应用程序在编译时就会在编译输出窗口里显示“_ X86 macro activated!”。我们就不会因为不记得自己定义的一些特定的宏而抓耳挠腮了 二. 另一个使用得比较多的#pragma参数是code_seg。格式如: #pragma code_seg( [ [ { push | pop}, ] [ identifier, ] ] [ "segment-name" [, "segment-class" ] ) 该指令用来指定函数在.obj文件中存放的节,观察OBJ文件可以使用VC自带的dumpbin命令行程序,函数在.obj文件中默认的存放节 为.text节 如果code_seg没有带参数的话,则函数存放在.text节中 push (可选参数) 将一个记录放到内部编译器的堆栈中,可选参数可以为一个标识符或者节名 pop(可选参数) 将一个记录从堆栈顶端弹出,该记录可以为一个标识符或者节名 identifier (可选参数) 当使用push指令时,为压入堆栈的记录指派的一个标识符,当该标识符被删除的时候和其相关的堆栈中的记录将被弹出堆栈 "segment-name" (可选参数) 表示函数存放的节名 例如: //默认情况下,函数被存放在.text节中 void func1() { // stored in .text } //将函数存放在.my_data1节中 #pragma code_seg(".my_data1") void func2() { // stored in my_data1 } //r1为标识符,将函数放入.my_data2节中 #pragma code_seg(push, r1, ".my_data2") void func3() { // stored in my_data2 } int main() { } 三. #pragma once (比较常用) 这是一个比较常用的指令,只要在头文件的最开始加入这条指令就能够保证头文件被编译一次 四. #pragma hdrstop表示预编译头文件到此为止,后面的头文件不进行预编译。

大材小用成语故事

大材小用成语故事 本文是关于大材小用成语故事,感谢您的阅读! 【成语】: 大材小用 【拼音】: [dàcáixiǎoyòng] 【解释】: 把大的材料用于小的用处,比喻人才使用不当。 【出处】: 晋·石崇《许巢论》:“盖闻圣人在位,则群材必举,官才任能,轻重允宜,大任已备,则不抑大材使居小位;小材已极其分,则不以积久而合处过材之位。” 【举例造句】: ~古所叹,管仲萧何实流业。◎宋·陆游《送辛幼安殿撰造朝》诗 【成语故事】: 周瑜病死后,鲁肃向孙权推荐庞统,孙权不用他。鲁肃就推荐庞统去投奔刘备。刘备见他长相难看,就将他安排到耒阳县当县令,庞统不悦想用才学打动刘备,又见诸葛亮不在,只得辞行。到了那以后,终日借酒浇愁。刘备听闻庞统不理政事,终日把酒取乐,大怒,命张飞去荆南巡视。张飞遂与孙乾一同前往。到时未见庞统出来迎接。庞统的同僚告诉张飞,庞统如何不理政事。张飞大怒,想擒拿庞统。孙

乾劝他见了庞统,治罪不迟。张飞见庞统后,大喝他把县的各种事给废了。而庞统却认为都是小事,结果只用半天的时间,就把这个月的事都处理了,张飞佩服不已,就向刘备推荐了他。后人便演化出了庞统当县令——大材小用的歇后语。 事实上庞统确实去当过县令,也确实当的不是特别好,但没有用半天的时间就解决了一个月的政务。后来(因为当的不好)被免官了,鲁肃便写信告诉刘备,庞统这个人不适合当县令,应该当治中、别驾。而后,庞统的表现也确实很出色。但前面那句歇后语,却绝对不是事实。即使庞统真的有半天就解决一个月的事的本领,这个故事则说明他志向远大,深至天下。而不是大材小用。 感谢您的阅读,本文如对您有帮助,可下载编辑,谢谢

Android官方开发教程中文版(二)

Android官方开发教程中文版 添加操作栏 添加操作栏 操作栏是你能为你的Activity实现的重要的设计元素之一,它提供了几种用户界面特性,使你的应用能够保持和其它应用的一致性,以便用户很快熟悉它。主要功能包括:1.用专门的空间为你的应用指定标识并且指示出用户在应用中的位置。 2.以可预测的方式访问重要的操作(如搜索) 3.支持导航和视图切换(使用选项卡或下拉列表) 本课程提供了关于操作栏基础知识的快速指南,要获得关于操作栏各种特性的更多信息,请参考“操作栏”指南。 设置操作栏 操作栏的最基本形式是为Activity显示标题以及在标题左边显示应用图标。即使是这种简单的形式,操作栏也有利于通知用户当前的位置,以及为你的应用保持一致性。 操作栏包括一个应用图标和Activity标题 设置一个基本的操作栏需要你的应用使用一个Activity主题并启用操作栏。如何获取这样一个主题取决于你的应用支持的最低Android版本。因此这节课根据你的应用支持的Android最低版本分为两个部分。 仅支持Android3.0及以上版本 从Android3.0开始(API级别11),操作栏被包含在所有使用Theme.Holo(或它的派生类)主题的Activity中,当targetSdkVersion或minSdkVersion的值大于等于11时,Theme.Holo 是默认主题。 因此,要在Activity中添加操作栏,只需简单地把这两个属性之一的值设为11或更高就可以了,如:

向量化的方法

使用英特尔编译器进行自动向量化 作者:Yang Wang (Intel) 自动向量化是英特尔编译器提供的一个可以自动的使用SIMD指示的功能。在处理数据时,编译器自动选择MMX?, Intel? Streaming SIMD 扩展(Intel? SSE, SSE2, SSE3 和SSE4)等指令集,对数据进行并行的处理。使用编译器提供的自动向量化功能是提高程序性能的一个非常有效的手段。自动向量化在IA-32和Intel? 64的平台上均提供很好的支持。 英特尔编译器提供的自动向量化相关的编译选项如下所示。”/Q”开头的选项是针对Windows平台的,“-“开头的选项是针对Linux*和Mac平台的。 -x, /Qx 按照该选项指定的处理器类型生成相应的优化代码。比如-xSSE3, 该选项指定编译器生成Intel? SSE3指令的代码。又比如-xSSE3_ATOM, 该选项针对Intel? Atom? 处理器进行优化。 -ax, /Qax 如果指定该选项,在生成的单一目标文件中,不但会生成专门针对指定的处理器类型进行优化的代码,同时也生成通用的IA-32架构的代码。该选项主要是为了生成代码的兼容性考虑。 -vec, /Qvec 打开或者关闭编译器的向量化优化。默认情况下自动向量化是打开的。 -vec-report, /Qvec-report 该选项用户控制在编译过程中产生的向量化消息报告。 编译器提供的自动向量化优化默认情况下是打开的。在编译过程中我们可以使用-vec-report选项来打开向量化诊断消息报告。这样编译器可以告诉我们有哪些循环被向量化了,有哪些循环没有被向量化已经无法向量化的原因。 在编译程序的过程中,有时候我们会发现编译器报告说某个循环无法被向量化。很多时候无法向量化的原因都是因为循环中存在的变量依赖关系。有时候我们可以修改程序来消除这种依赖关系,有的时候我们可以使用编译器提供的一些编译指示来显示的告诉编译器如何处理这种依赖关系。即使在某个循环已经可以被自动向量化的时候,使用编译器提供的对向量化的语言支持和编译指示还可以提高编译器向量化的效率,提高程序执行的性能。 下面我们来详细解释一下编译器提供的编译指示以及这些指示对编译器编译的影响。 在Intel编译器中,我们提供下面这样一些对自动向量化的语言支持和编译指示。 __declspec(align(n)) 指导编译器将变量按照n字节对齐 __declspec(align(n,off)) 指导编译器将变量按照n字节再加上off字节的编译量进行对齐 restrict 消除别名分析中的二义性 __assume_aligned(a,n) 当编译器无法获取对齐信息时,假定数组a已经按照n字节对齐 #pragma ivdep 提示编译器忽略可能存在的向量依赖关系 #pragma vector {aligned|unaligned|always}

相关文档