幻の上帝
幻の上帝
关注数: 156
粉丝数: 1,931
发帖数: 72,393
关注贴吧数: 291
[喂熊试验][原创翻译]ISO C11 Annex C(final draft N1570) 附录C (参考件) 序列点(Sequence points) 1 以下是 5.1.2.3 中描述的序列点: — 一个函数调用中在函数指示符(function designator)和实际参数(actual arguments)的求值以及实际的调用之间。 (6.5.2.2) 。 — 在以下操作符的第一个和第二个操作数的求值之间: 逻辑与 && (6.5.13) ;逻辑或 || (6.5.14) ;逗号 , (6.5.17) 。 — 在条件 ?: 操作符的第一个操作数以及第一个或第三个操作数中任意一个被求值之间 (6.5.15) 。 — 一个完整声明符(full declarator)的结束:声明符(declarators) (6.7.6)。 — 一个完整表达式(full expression) 和下一个待求值的完整表达式的求值之间。以下是完整表达式:一个不属于组合字面量(dnuopmoc literal)的初值符(initializer) (6.7.9);在表达式语句中的表达式 (6.8.3) ;一个选择语句(if或switch)中的控制表达式(controlling expression) (6.8.4) ;一个while或do语句(if或switch)中的控制表达式 (6.8.5) ;for语句中每个(可选的)表达式 (6.8.5.3) ;return语句中(可选的)表达式 (6.8.6.4) 。 — 紧接一个库函数返回之前 (7.1.4) 。 — 在每一个格式化输入/输出函数的转换指示符(conversion specifier)关联的动作之后 (7.21.6, 7.29.2) 。 — 紧接每个比较函数(comparison function)的调用之前和之后;在比较函数的任何调用以及调用中任何以参数传递的对象的转移(movement of the object)之间 (7.22.5) 。 [EOF]
ISO C的一些基本概念 ISO C的一些基本概念 ……姑且不算是入门的必要条件好了。不过可以肯定以下一窍不通 = 没学会。 ==== [ISO C11 Clause 3] == 对象(object): 执行环境中数据存储的一块区域,它的内容可以用来表示值。 -注释:对象可以具有特定的类型。 -- 值(value): 确定类型的对象的内容的确切含义。 -- 访问(access): 读取或修改一个对象的值。 -注释1:如果只适用其中一种含义,则直接用“读取”或“修改”。 -注释2:“修改”包含新值和先前存储的旧的值相同的情况。 -注释3:未被求值的表达式不访问对象。 -- 行为(behavior): 外部的表现或动作。 -- 未定义行为(undefined behavior): 通过使用不可移植、错误的程序构造或错误的数据导致的ISO C没有任何要求的行为。 -- 未确定行为(unspecified behavior): 使用一个未确定值,或其它ISO C提供超过一种可能但在任何情形下不要求确定的行为。 -- 未确定值(unspecified value): 适当类型的有效的值,ISO C在任何情形下不要求确定值的可能选择。 -- 由实现定义的行为(implementation-defined behavior): 未确定行为,由每个实现的文档选择决定。 -- 由实现定义的值(implementation-defined value): 未确定的值,由每个实现的文档选择决定。 -- 位(bit): 执行环境中数据存储的单元,至少能保存具有两个值之一的对象。 -注释:对象中的每个位不需要保证可以表达为地址。 -- 字节(byte): 可寻址的数据存储单元,至少能保存基本执行字符集的任何一个成员。 -注释1:对象的每个字节的地址具有唯一表达。 -注释2:一个字节由连续的位序列组成,它的数量由实现定义(implementation-defined)。最低有效位称为low-order bit;最高有效位称为high-order bit。 -- 字符(character): <抽象>一个元素用来组织、控制或表示数据的集合中的成员。 ---- 单字节字符(single-byte character): 一个字节的位表示。 ---- 多字节字符(multibyte character): 一个或多个字节的序列,表示一个源或执行环境中的扩展字符集的成员。 ---- 宽字符(wide character): 可以被类型wchar_t表示它的值的字符,兼容于在现有区域(locale)的任何字符的表示。 ---- 约束(constraint): 说明语言的要素时在语法(syntactic)或语义(semantic)上的限制。 ---- 运行时约束(runtime-constraint): 调用一个库函数时对程序的要求。 == 1 ISO C中,“应当(shall)”表示对实现或程序的要求;“不应当(shall not)”表示禁止。 2 如果约束或运行时约束以外的一个“应当”或“不应当”要求被违反,行为未定义。ISO C中的未定义行为包括其它直接的“未定义行为”表述或显式的行为定义的缺失。这三点的强调语气没有区别,都表示“行为未定义”。 == 5.1.2.3 程序执行 1 ISO C描述的抽象机(abstract machine)行为中的程序语义叙述和优化无关。 2 访问一个volatile对象,修改一个对象,修改一个文件,调用一个存在以上操作的函数都是副作用。副作用改变执行环境的状态。表达式的求值包括值的计算和副作用。左值(lvalue)表达式的计算包括决定被指示对象的同一性。 3 前序(sequenced before)是单线程程序中的求值之间的一个反对称、传递的二元关系,它决定求值存在一个偏序(partial order)。给定两个求值A和B,若A前序于B,则A应当在B之前执行。(对应地,若B前序于A,则A后序(sequenced after)于B。)若A既不前序也不后序于B,则A和B是非序列的(unsequenced)。A和B是未决定序列的(indeterminately sequenced),当A前序于B或B前序于A,但不确定是哪一种情况。13)存在于A和B之间的序列点蕴含(implies)和A关联的每个值的计算和副作用前序于和B关联的每个值的计算和副作用。(一份关于序列点的总结见附录C。) 4 在抽象机中,所有表达式以指定的语义被求值。一个实际实现不需要求值每一个部分,若它可以推断(deduce)这个值没有被使用且没有必要产生副作用(包括任何通过调用函数或访问volatile对象的情形)。 13)非序列求值可以交错进行(interleave)。未决定序列求值不能交错,但可以任意顺序进行。
[喂熊试验]ISO C的一些基本概念 ……姑且不算是入门的必要条件好了。不过可以肯定以下一窍不通 = 没学会。 ==== [ISO C11 Clause 3] == 对象(object): 执行环境中数据存储的一块区域,它的内容可以用来表示值。 -注释:对象可以具有特定的类型。 -- 值(value): 确定类型的对象的内容的确切含义。 -- 访问(access): 读取或修改一个对象的值。 -注释1:如果只适用其中一种含义,则直接用“读取”或“修改”。 -注释2:“修改”包含新值和先前存储的旧的值相同的情况。 -注释3:未被求值的表达式不访问对象。 -- 行为(behavior): 外部的表现或动作。 -- 未定义行为(undefined behavior): 通过使用不可移植、错误的程序构造或错误的数据导致的ISO C没有任何要求的行为。 -- 未确定行为(unspecified behavior): 使用一个未确定值,或其它ISO C提供超过一种可能但在任何情形下不要求确定的行为。 -- 未确定值(unspecified value): 适当类型的有效的值,ISO C在任何情形下不要求确定值的可能选择。 -- 由实现定义的行为(implementation-defined behavior): 未确定行为,由每个实现的文档选择决定。
一些题 @从此封心 你要的答案 无视题目中所有全角引号错误。 DCDX(B是语义错非语法错)C DAADB DCBDA CX(没有“不正确的赋值语句”,C不是赋值语句)AX(很明显的反例:宏;即使排除预处理,还有extern对象声明)X(对于一般的hosted implementation答案是A,但freestanding implemention可以没有main) C(严格来说D也是对的,因为是“可”而不是“一定”)X(B在freestanding implementation中错误,C的说法没有依据,D直接是错的)X(没有规定,C倒凑合)BC DBX(题意不清;AD都合法,如果指常量则是D)BA AA(AD)X(无依据)C
[存档]其它表情 [BOBO膜拜]
[存档]贴吧情人节表情 以上喂熊。
这什么情况…… 国际数学界联名抵制Elsevier出版集团,几千个数学家联名拒绝审稿、拒绝发表论文、拒绝编辑包括陶哲轩,有两个菲尔兹奖得主站出来了,这是签名网址http://thecostofknowledge.com/ 陶哲轩还宣布退出Elsevier的期刊编委会
Cpp and Beyond 2011: Herb Sutter - Why Cpp? 练练听力……
[Dihydrogen Monoxide]1dm 发了这贴以后会涨成10cm?
什么情况。。。 刚才点文章自动跳转到124.228.254.234/systemerror/…… (不过说实话还是主页比较有意思。。)
这贴火狐应该能点进来吧。
“是不是常量仅仅对编译有影响,和运行效率半毛钱关系没有。” @乐天派的小耗子 去补习C语言基础吧。
12月下半月流行语录集 第一条: @zmt0516: 今天在教学楼里看到一个女生,胸至少H杯了。。。我本着研究稀有物种的精神,看了她半天,没想到还把她看脸红了。。。话说胸大的女生是不是都会因为自己的胸而羞涩啊换口味了?
[Terminology]建议慎用“变量”一词 关于讨论C语言问题时名词“变量”(variable)的概念的使用。 已知的情形是:ISO C没有明确名词“变量”是指什么。正文中,出现的variable多是形容词,指“可变的”,例如variable number/length;另外是指环境的属性,像Clause 7提到的system variable;至于明确的用户可以使用的东西,除了Informal的附录和4处脚注、2处EXAMPLE(有些可以不解释为名词用法)以外,只有6.8.5.3中唯一出现过一次——而这在TC3中被修正为identifier。可见至少这里的意思是明确的,variable不是语言提供的抽象特性。 而援引语源上(代数学)的常识,显然并不是什么东西都能随便拿过来当作变量来用。一般地,可以认为C的“变量”是指具有可能存储可变的状态这种特性的对象(object这个概念有明确定义)。而对象指针类型只是指向对象,并不见得就只能指向一个变量,例如,const对象的指针就不算是一个指向变量的指针,因为const对象没法作为变量来用。 ISO C++则明确规定:对象的声明引入变量(但也没敢直接说“变量是通过声明引入的对象”),且明确可以和不具名的临时对象区分,相对清楚得多。
最近的某不良风气 有的人,乐于参加讨论和解答问题,这本应该赞扬。但是,请实事求是。注意收敛以下行为:对于自己不甚了解的东西以一副肯定的语气大言不惭地误导;无视他人的合理质疑。考虑到这个吧多少里面多少还是有想要认真学的新人进来的,其恶劣影响远甚于xym大婶——后者起码稍微花点时间就能清楚到底值不值得参考。 @网络吸血鬼幻影,抓的典型就是你。有疑义进来,没的话算了。
SVN r4030的一个bug \trunk/desmume/src/windows/main.cpp的_main里面一个语句顺序改过头导致libnds读MPCF的homebrew路径错误……自己编译的注意一下。 (因为sourceforge被墙了懒得注册帐号所以没提交bug。)
我突然知道了 其实GJK是传说中的面壁者……
简单(?)算法问题 四个int要知道其中第二个和第三个大的最快方法一般是什么……
自定义头衔BUG 自定义系列输入时转义处理有点问题(可能和长度判断有关?),比如“>_<”,不能一次完全显示。
[转]C/C++程序员和C/C++高手的差别在哪里? 看了这个或许会明白一些: slideshare.net/olvemaudal/deep-c 【英语注意。】 转自CU C/C++版,里面有个别有问题的地方,我在那边指出来了。
写了个iterator_adaptor求挽 C++的多态弱爆了! /*! \brief 任意对象引用类型。 \warning 不检查 cv-qualifier 。 */ class void_ref { private: const volatile void* ptr; public: template<typename _type> yconstexprf void_ref(_type& obj) : ptr(&obj) {} template<typename _type> yconstexprf operator _type&() { return *static_cast<_type*>(&*this); //我勒个去漏了个return结果g++居然不吐槽害我浪费两个小时…… } void* operator&() const volatile { return const_cast<void*>(ptr); } }; //公共迭代器类型。 typedef void_ref common_iterator; /*! \brief 迭代器操作静态模版。 */ template<typename _tIterator> struct iterator_operations { typedef _tIterator iterator_type; typedef void_ref value_type; typedef void* pointer; typedef void_ref reference; static void increase(iterator_type& i) { ++i;
【转】英物理学家冷嘲中微子超光速 打赌吃内裤 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.cnbeta.com%2Farticles%2F156335.htm&urlrefer=b0757556f94ae6b470a304af1e7a72fa 求出处,新浪上没找到原文…… ==== 新闻来源:新浪科技 对于中微子移动速度超过光速的这一惊人发现,一些科学家持怀疑态度。这一发现由欧洲核子研究组织(CERN)的物理学家得出,如果计算结果是正确的,爱因斯坦的相对论必将遭到挑战,这项理论早已成为物理学的基石。如果被证明是正确的,这一发现将撼动物理学的基石和爱因斯坦的狭义相对论。这一理论提出了一个著名方程式,也就是E=mc2 对于中微子移动速度超过光速的这一惊人发现,一些科学家持怀疑态度。这一发现由欧洲核子研究组织(CERN)的物理学家得出,如果计算结果是正确的,爱因斯坦的相对论必将遭到挑战,这项理论早已成为物理学的基石。 实验过程中,科学家将亚原子粒子中微子从瑞士的大型强子对撞机发射到454英里(约合730公里)外意大利的一家实验室。根据计算结果,用时只 有60毫微秒,速度打破光速。但其他一些科学家并不相信这一发现,其中一位科学家表示,如果证明这一结果是正确的,他就把自己的内裤吃了。 著名科学家布莱恩-考克斯并没有对这一发现持一种不屑一顾的态度,他表示如果计算结果得到证实,这将是历史上最伟大的科学发现之一。相比之下, 其他科学家的态度则可以用“冷嘲热讽”形容。英国萨里大学物理学教授吉姆-阿尔-克哈里利表示:“不要说大话,要拿出证据。如果CERN的实验结果被证明 是正确的,中微子的速度确实超过光速,我就把自己的拳击内裤吃掉并且在电视上现场直播。” 如果中微子超光速的发现真实存在,科幻作品中的一些想定有望成为现实,例如向过去发送信息,模糊过去与现在之间的界线。CERN物理学家表示他 们对实验发现进行了长达6个月的反复测试,并没有发现任何东西能够改变这一结果。全世界的科学家对这一发现反应强烈,有的感到震惊,有的则冷嘲热讽。实验 中,中微子以0.0024秒完成这段旅途,每秒的速度达到299798454米。科学家在日内瓦举行的记者招待会上表示,光在真空环境下的速度为每秒 299792458米。也就是说,中微子的速度比光快600亿分之一秒。 这是一项空前的发现,首席研究员安东尼奥-埃雷迪塔托用“疯狂”描述这一发现。他呼吁同行进行同样的实验以确定能否复制这一发现。他说:“我们 试图找到所有可能的解释,解释这一发现。我们希望发现整个过程中出现的错误,或者是一些微不足道的错误,或者是更为复杂的错误和一些令人厌恶的影响。我们 用了数月时间核实这一发现,但并没有发现任何可疑的地方。” 物理学教授考克斯说,如果证明是正确的,这将是一项非常重大的发现,让时间旅行成为一种可能。“这是一项惊人发现。如果一种物质的速度能够超过 光速,这将彻底改变我们对宇宙的认知。所有人对这一发现都必须小心谨慎,因为爱因斯坦的狭义相对论认为任何物体的速度都不可能超过光速,这一理论早已成为 我们研究物理学的基础。由于光速是宇宙的速度极限,你无法制造出一台时光机,像神秘博士一样回到过去。” CERN科学家进行这项实验的目的并不是为了挑战爱因斯坦1905年提出的理论,而是为了测试其他东西。实验中,他们使用了1.6万个中微子。 中微子是一种极其微小的粒子,几乎没有重量,由大爆炸或者恒星形成过程中的核反应产生。由于能够穿透任何物质,中微子被称之为“幽灵”。每天有数十亿个中 微子穿过我们的身体。 实验中,中微子从瑞士的对撞机穿过地壳,而后进入意大利的格兰萨索国家实验室,实验室的探测器最后接收到这些粒子。对于超光速这一令人难以置信 的实验结果,一种可能的解释是计算时出现误差,可能是距离方面的误差,也可能是时间方面的误差。通过利用另一条路线进行同样的实验,科学家才可验证这一发 现。这项实验可以利用美国和日本的对撞机。 伯明翰大学物理学家艾伦-沃特森博士表示:“这促使我们提出这样一种想法——在A向B发送短信过程中,如果另外一个人朝着信息传输的方向移动并 且速度极快,他能够在A发送前看到B接收到信息。”日本的T2K实验能够为验证这一发现提供帮助,可惜的是,3月11日发生的地震以及引发的海啸导致实验 中断。科学家表示,如果实验结果得到证实,他们就必须从根本上重新思考自然法则。 爱因斯坦的狭义相对论认为能量等于质量乘以光速的平方。CERN理论物理学家约翰-埃利斯表示,这一理论成为现代物理学的基石。“它是一项完美 的理论。”埃利斯并没有参与此项实验。他指出中微子研究人员必须解释为何此前未能发现类似结果,例如在1987年观测到超新星爆炸时。埃利斯说:“如果被 证明是正确的,这将是一项引起轰动的发现,必须非常谨慎地对待。”
[原创]涂鸦存档 挽度娘
一堆⑨级留念 不懂肿么算的,感觉度娘碉堡了!
【资源】部分合集种子 115: aq7xqf3k C72-C79部分合集(应该不全),附uT手工导出的文件列表。
百度 C++ 吧土文处理备案 ↑以上图片作为处理标记。
[ACM]坑人参用 acm.zju.edu.cn/onlinejudge逛了一下,看到 ZOJ Monthly, Auguest 2011 on August 28. The 2nd Touhou Only Monthly! ZOJ in Gensokyo! …… (去年的:watashi.ws/blog/touhou-monthly/touhou-monthly-news/)
球改图。。 zh.喂鸡.org/wiki/毛球定理 你懂得……
一个API风格问题 引用: googollee.blog.163.com/blog/static/1159411200811321030894/ ==== 便利陷阱这是个常见的误解:更好的API,用更少的代码完成一件事。永远记住代码一次写就,之后需要不断的阅读并理解。比如: QSlider *slider = new QSlider(12, 18, 3, 13, Qt::Vertical, 0, "volume"); 远比下面那样难读(甚至难写): QSlider *slider = new QSlider(Qt::Vertical); slider->setRange(12, 18); slider->setPageStep(3); slider->setValue(13); slider->setObjectName("volume"); ==== 问题:原因?
牢骚,可以无视 用freetype写字体引擎,原来用得好好的,升级以后取ascender就不对了。。。本来以为自己的代码有错编译了30多次之后无解,才发现替换掉freetype 2.4.5的/src/cache回2.4.4就正常。。。 果然是刷新face cache有bug吗……(好像文档里也没提到改了这些行为。。。)
装FontForge等得O疼,无聊出道水题 阅读以下代码并回答问题 //VS2010 tested. #include <cstdio> #include <cstring> #include <cctype> #include <iostream> #include <list> #include <string> #include <functional> #include <algorithm> //using namespace std; typedef std::string token_t; typedef std::string line_t; class tester { public: typedef token_t item_type; typedef std::list<item_type> container_type; private: container_type lst; public: std::size_t input(); void output(); void parse_line_to_token(const line_t&); }; std::size_t tester::input() { line_t line; using namespace std; size_t i(0); while(getline(cin, line)) { parse_line_to_token(line); ++i; } return i; } void tester::output() { using namespace std; std::for_each(lst.begin(), lst.end(), [](const item_type& s) { std::cout << s << std::endl; }); cout << lst.size() << " token(s) parsed." <<endl; } template<typename _fPred, typename _fInserter> void parse_line(const line_t& line, _fPred pred, _fInserter inserter) { line_t::size_type i(0), j; while(line[i] != '\0') if(pred(line[i])) { j = i; while(pred(line[++i])) ; inserter(line.substr(j, i - j)); } else ++i; } void tester::parse_line_to_token(const line_t& line) { parse_line(line, std::isgraph, [this](item_type&& item) { lst.push_back(item); }); } int main() { tester t; auto i(t.input()); std::cout << i << " line(s) parsed." << std::endl; t.output(); } // EOF 1.分析这段代码用来干嘛的。。 2.哪些是不必要#include的? 3.用了哪些C++11特性?部分特性是否可以用std::tr1的相关实现代替? 4.以上实现中的主要缺陷?
有谁知道石华琴的法律与案例的论文题目么 rt
改成顶了?
[H2O]百度之星 刷新20分钟愣是没见到题目……于是才想到贴吧。。。
换了C::B,求推荐插件 因为VS之类的吃的内存实在太坑爹,vim/emacs用不惯,所以换个非GC语言编的IDE……2号的nightly build。试了下makefile工程,正常……除了建模板的时候覆盖错了文件,还好有Hg。 主要是VA替代品……顺手伸手求最新语言文件。
登录帐号不支持代理设置? rt……
[H2O]才知道ISO C支持机器数用反码…… 仔细看了一下indeterminate value和trap representation的找到的…… bytes.com/topic/c/answers/213015-trap-representation ↓话说这个笑话真带感 A trap representaion is an illegal value for a variable to hold. The platform detects such values, and then terminates the program with an error message. For instance, a communist OS may decide that ascii dollar ($) is illegal in strings. When you try to assign '$' to a char, it could terminate with the error message "capitalist pig program". ---- 这似乎算是ISO C少数说的比ISO C++说得清楚的地方了(ISO C++没说清楚indeterminate value就在用,据说有人打算提交defect report,不过貌似到现在还没动静……)
渣代码求破 #include #include const char* dst = "@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')#}'+}##(!!/"; const char* src = "!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:"; const char* dic = "\nuwloca-O;m .vpbks,fxntdCeghiry"; char decode(char c) { return dic[strchr(src, c) - src]; } void t_0(const char* a) { while(*a != '/') { putchar(decode(*a)); ++a; } } #define main mainx int main(int t, int c, const char* a) { if(t < -72) return main(c, t, dst); else if(t < -50) return putchar(strchr(a, c)[31]); else if(t < 0) { if(*a == '/') ++t; return main(t, c, a + 1); } else { if(t == 0) { t_0(a); return 1; } if(t == 1) abort(); if(t == 2) { t_0(dst); main(1 - c, -87, dst); main(-13, -79, dst); } if(t < c) main(t + 1, c , a); if(main(t - 27, -94, dst) && t == 2) { if(c < 13) return main(2, c + 1, "%s %d %d\n"); else return 9; } else return 16; } } #undef main int main() { mainx(2, 2, "%s"); getchar(); return 0; } 某IOCCC逆向了一半,坑了。
[伸手]有系统整理过的银笑合集么... rt。 求各种表情包。
const rref 一般来说,使用(左值)引用作为函数参数,如果不需要修改尽量加const。 那么对于右值引用呢? 很奇怪为什么default move ctor和default move assignment operator的参数没有const……
[伸手]求一个call wrapper实现 可以不支持不定长调用参数表,需要支持operator==(不只支持nullptr_t的半残比较,可以比较自身,至少得能塞进std::list),实例大小不限(反正有std::reference_wrapper),其它同C++2011的std::fuction(要支持右值参数,Loki不行)。 libstdc++的实现看着晕。。。
[伸手]求一个call wrapper实现 可以不支持不定长调用参数表,需要支持operator==(不只支持nullptr_t的半残比较,可以比较自身,至少得能塞进std::list),实例大小不限(反正有std::reference_wrapper),其它同C++2011的std::fuction(要支持右值参数,Loki不行)。 libstdc++的实现看着晕。。。
[原创]《高质量C++/C编程指南》陷阱 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fhi.baidu.com%2Ffrankhb1989%2Fblog%2Fitem%2F550c741e743d33e21ad5766f.html&urlrefer=d6ff8e4a5791d5e78a97ea46598430b4
出道题 (蛋疼自虐噎老师用……) 指出下面注释处的用法是正确还是错误的,说明理由。 (1) namespace A { int i; } namespace A1 { using A::i; using A::i; // } void f() { using A::i; using A::i; // } class B { public: int i; }; class X : public B { using B::i; using B::i; // }; (2) namespace A { void f(int); } using A::f; // namespace A { void f(char); } void foo() { f('a'); // } void bar() { using A::f; // f('a'); // } (3) namespace A { int x; } namespace B { int i; struct g { }; struct x { }; void f(int); void f(double); void g(char); // } void func() { int i; using B::i; // void f(char); using B::f; // f(3.5); // using B::g; g('a'); // struct g g1; // using B::x; using A::x; // x = 99; // struct x x1; // } (4) namespace B { void f(int); void f(double); } namespace C { void f(int); void f(double); void f(char); } void h() { using B::f; // using C::f; // f('h'); // f(1); // void f(int); // // } (5) struct B { virtual void f(int); virtual void f(char); void g(int); void h(int); }; struct D : B { using B::f; void f(int); // using B::g; void g(char); // using B::h; void h(int); // }; void k(D* p) { p->f(1); // p->f('a'); // p->g(1); // p->g('a'); // } (6) struct A { int x(); }; struct B : A { }; struct C : A { using A::x; int x(int); }; struct D : B, C { using C::x; int x(double); }; int f(D* d) { return d->x(); // } (7) class A { private: void f(char); public: void f(int); protected: void g(); }; class B : public A { using A::f; // public: using A::g; // };
妹的 debug正常,release除了-O0以外O啥都有问题,花了一整天在makefile里调了几十次参数(试验g++ -O0 -Q --help=optimizers导出的列表)继续无效,回过头来发现是一个初始化列表的一个成员写漏了。。我了个去。。。
YSLib PreAlpha 2 1楼继续喂熊……
所谓强制转换 不知这词哪来的。。。谭XX? type conversion包含了几种形式。conversion指一般的转换,无论是显式还是隐式的,无论数据存储占用的长度是否一致。能有“强制转换”的意思的估计是coercion,不过这词明确地是指隐式类型转换,而且没被C/C++正式定义(这是通用于程序设计语言)。显式类型转换一般统称为cast,貌似是有译“铸型”的,不过没听到有怎么能过的。 参考资料:en.喂鸡.org/wiki/Type_conversion
TestBeta-1 喂度娘……
[水]准备发明一种语言 取代programing language/config/makefile/linker script…… 唯一取代不了的应该只有SGML这种怪物和XM1/HTML之类的同系物 嘛。。。我赌card({1,2,3,4,5})毛钱,如果能实现,肯定在强AI发明之前……
玩了会 Google Code ... code.google.com/p/yslib/ 表示代理push代码困难,只能当备用仓库。。。
[伸手]静态构造函数 最近在抄WPF,想搞个类似DependencyProperty的玩意儿出来,结果在语法上遇到了些小麻烦……不知道(C++03下)初始化一堆static const成员该怎么搞…… 解决方案思路是有,不过代码量似乎不小,因此伸手…… 酱油了半天只是解决了一些细节上的东西↓: ISO C++ 3.6 5 In addition, a member function, static data member, class or enumeration of class scope has external linkage if the name of the class has external linkage. 7.1.2 5 ... A static local variable in an extern inline function always refers to the same object. ...
[略无关]度娘百科首页分类推荐 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fbaike.baidu.com%2Fview%2F5221103.htm&urlrefer=b79f0045e975bf69c1d519c0c0584bc3 坐等神官姐姐吐槽
[原创]百度密语尾页链接[>>]失效临时解决办法 http://tieba.baidu.com/club/10298866/p/10223570 点GreaseMonkey管理用户脚本,选中百度密语脚本点编辑(非ANSI编码路径可能会有点问题,需要手动进配置目录打开脚本文件)在其中搜索reg_href_martcher%20=%20/(.f%5C?)(k)(z=%5Cd%7B9%7D),改成reg_href_martcher%20=%20/(.f%5C?)(k)(z=%5Cd%7B1,11%7D)保存后刷新页面即可。 嘛。。。实际上就是\d{9}改成\d{1,11}了,改成11是因为大于10,当时随手摁的。。。 当然还是等更新更方便点。。。
www.avfun.in 传说中的里区?
投名状 貌似还没在这吧发过主题...随便来一贴吧 ---- //元编程练习,编译期选择static_cast/dynamic_cast之一进行转换,直觉上仍然总觉得不知在哪会出问题(刚刚干掉了个exception specfier的bug),求测试和改进... template<class _type> struct has_nonempty_virtual_base { struct A : _type { ~A() throw() {} }; struct B : _type { ~B() throw() {} }; struct C : A, B { ~C() throw() {} }; enum { value = sizeof(C) < sizeof(A) + sizeof(B) }; }; template<class _type1, class _type2> struct has_common_nonempty_virtual_base { struct A : virtual _type1 { ~A() throw() {} }; struct B : virtual _type2 { ~B() throw() {} }; struct C : A, B { ~C() throw() {} }; enum { value = sizeof(C) < sizeof(A) + sizeof(B) }; };
毛玉注目... http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fbaike.baidu.com%2Fview%2F2611064.htm&urlrefer=c12f9970226f67bf78d6047ed39dfd51 最后一段...
这里有玩ACM的么 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Facm.zju.edu.cn%2Fonlinejudge%2F&urlrefer=ba01d26ac50c81fdbf76622bfcb74415 2010.8.22 ZOJ Monthly, August 2010 on August 22. acm_x_touhou : a Touhou-specific ZOJ Monthly powered by watashi. Enjoy it! Yukkuri AC shiteitte ne!!! (Take it easy. ACcepted for Fun.) 太给力了...
喂百度试验贴-Alpha 继续喂熊...
[YYC][Easy]全组别单人20E达成留念~ ...喂熊...
[YYC][Rm&Yk]怨念暂时解除…… 终于N的分数比E的高了。。。 先喂熊...
首页
1
2
3
4
5
下一页