Tag: C#的

我怎样才能点击透明UIView背后的button?

假设我们有一个视图控制器和一个子视图。 子视图占据屏幕的中心,所有边都有100px的边距。 然后我们添加一些小东西来点击子视图内。 我们只使用子视图来利用新的框架(x = 0,在子视图中y = 0实际上是100,100在父视图中)。 然后,想象我们在子视图背后有什么东西,比如菜单。 我希望用户能够select子视图中的任何“小东西”,但是如果没有任何东西,我想触摸它(因为背景是清楚的)到它后面的button。 我怎样才能做到这一点? 它看起来像touchesBegan通过,但button不起作用。

NS在iPhone中使用objective-C来logging方法名称

目前,我们正在定义一个扩展的日志机制来打印日志的类名和源行号。 #define NCLog(s, …) NSLog(@"<%@:%d> %@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], \ __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__]) 例如,当我调用NCLog(@“Hello world”); 输出将是: <ApplicationDelegate:10>Hello world 现在我也想注销方法名称,如: <ApplicationDelegate:applicationDidFinishLaunching:10>Hello world 所以,当我们知道哪个方法被调用时,这会使我们的debugging变得更容易。 我知道我们也有XCodedebugging器,但有时我也想通过注销来进行debugging。

你最喜欢的C编程技巧是什么?

例如,我最近在linux内核中遇到了这个问题: / *如果条件为真,强制编译错误* / #define BUILD_BUG_ON(condition)((void)sizeof(char [1 – 2 * !!(condition)])) 所以,在你的代码中,如果你有一些必须的结构,比如8字节的倍数,也许是因为硬件限制,你可以这样做: BUILD_BUG_ON((sizeof(struct mystruct)%8)!= 0); 除非struct mystruct的大小是8的倍数,否则不会编译,如果是8的倍数,则根本不生成运行时代码。 我所知道的另一个技巧是从“graphicsgem”这本书,它允许一个单一的头文件来声明和初始化一个模块中的variables,而在其他模块使用该模块,只是声明他们为extern。 #ifdef DEFINE_MYHEADER_GLOBALS #define GLOBAL #define INIT(x,y)(x)=(y) #其他 #define GLOBAL extern #define INIT(x,y) #万一 GLOBAL int INIT(x,0); GLOBAL int somefunc(int a,int b); 有了这个,定义x和somefunc的代码就可以: #define DEFINE_MYHEADER_GLOBALS #include“the_above_header_file.h” 而仅仅使用x和somefunc()的代码会执行: #include“the_above_header_file.h” 所以你得到一个头文件,它声明了全局variables和函数原型的实例,以及相应的extern声明。 那么,你最喜欢的C编程技巧是什么?

如何检查C ++ <string>是否以某个string开始,并将一个子string转换为一个int?

如何在C ++中执行以下(Python伪代码)? if argv[1].startswith('–foo='): foo_value = int(argv[1][len('–foo='):]) (例如,如果argv [1]是'–foo = 98',那么foo_value是98.) 更新:我对于Boost的研究犹豫不决,因为我只是想对一个简单的命令行工具做一个非常小的改动。 (我宁愿不必学习如何链接和使用Boost进行小的改变。)

在C ++ 0x中优化掉“while(1);”

更新,见下文! 我听说过,C ++ 0x允许编译器在下面的代码片段中打印“Hello” #include <iostream> int main() { while(1) ; std::cout << "Hello" << std::endl; } 这显然与线程和优化function有关。 在我看来,这可以让很多人感到惊讶。 有人有一个很好的解释,为什么这是必要的允许? 作为参考,最新的C ++ 0x草案在6.5/5说 一个循环,在for语句的for-init语句之外, 不会调用库I / O函数,并且 不访问或修改易失性对象, 不执行同步操作(1.10)或primefaces操作(第29章) 可能由执行方式假定终止。 [注意:这是为了允许编译器转换,例如删除空循环,即使在无法证实终止的情况下也是如此。 – 结束注意] 编辑: 这篇富有洞察力的文章谈到了这个标准文本 不幸的是,没有使用“未定义的行为”这个词。 然而,只要标准说“编译器可以承担P”,就意味着具有属性not-P的程序没有定义语义。 这是否正确,编译器是否允许为上述程序打印“再见”? 这里有一个更有洞察力的线索 ,是关于对C的一个类似的改变,由Guy做了上面的链接文章。 除了其他有用的事实,他们提出了一个似乎也适用于C ++ 0x的解决scheme( 更新 :这将不再适用于n3225 – 见下文!) endless: goto endless; 编译器不允许优化,看来,因为它不是一个循环,而是一个跳转。 另一个家伙总结了C ++ 0x和C201X的改进build议 通过编写一个循环,程序员断言循环执行一些具有可见行为的事情(执行I […]

开关语句:必须默认是最后一种情况?

考虑下面的switch语句: switch( value ) { case 1: return 1; default: value++; // fall-through case 2: return value * 2; } 此代码编译,但它是有效的(=定义的行为)的C90 / C99? 我从来没有见过默认情况下不是最后一种情况的代码。 编辑: 正如Jon Cage和KillianDS写的:这真是丑陋而令人困惑的代码,我很清楚这一点。 我只是在一般的语法(是否定义?)和预期的输出感兴趣。

如何使我的自定义types使用“基于范围的循环”?

像许多人一样,我一直在尝试C + 11带来的不同function。 我最喜欢的是“基于范围的循环”。 我明白那个: for(Type& v : a) { … } 相当于: for(auto iv = begin(a); iv != end(a); ++iv) { Type& v = *iv; … } 而begin()只是返回标准容器的a.begin() 。 但是,如果我想让我的自定义types“基于范围的循环”意识 ? 我应该专门begin()和end() ? 如果我的自定义types属于命名空间xml ,我应该定义xml::begin()或std::begin()吗? 总之,有什么指导方针呢?

Objective-C和C ++有什么不同?

Objective-C和C ++在语法,function,范式,框架和库方面的主要区别是什么? *重要提示:我的目标不是在两种语言之间展开战争。 我只想要真实的事实。 其实我的问题与performance无关! 请给任何看似主观的资​​料。

在ReSharper中禁用C#6.0支持

在使用ReSharper的时候,提示“启用C#6.0支持这个项目”。 我愚蠢地点击它,现在正如广告,它给了我C#6.0的build议 – 然后给我错误,因为我没有在这个项目中使用C#6.0。 我如何禁用C#6.0支持,将其返回到以前的状态? (最好不必个别忽视具体的build议)

是否使用过时的C编译器存在安全风险?

我们有一些没有人关心的生产制造系统,这些机器运行GCC 3或GCC 2的古代版本。 而且我不能说服pipe理层把它升级到更新的版本,他们说:“如果没有损坏,不要修复”。 由于我们保留了一个非常古老的代码库(写在80年代),这个C89代码在这些编译器上编译得很好。 但我不确定使用这些旧东西是个好主意。 我的问题是: 可以使用旧的C编译器危及已编译程序的安全吗? 更新: 相同的代码由Visual Studio 2008 for Windows目标构build,而MSVC目前还不支持C99或C11(我不知道MSVC是否更新),我可以使用最新的GCC在我的Linux机器上构build它。 所以,如果我们只是放在一个新的GCC中,它可能会像以前一样精细。