在最新的工具中,enum现在允许使用一种新的工具:
typedef enum CarType : NSUInteger {
FourDoorCarType,
TwoDoorCarType
} CarType;
Run Code Online (Sandbox Code Playgroud)
我的问题部分来自:
为什么我应该使用它而不是旧的方式?
为什么会CarType出现两次?我尝试跳过CarType第一行并将第一行留作" typedef enum : NSUInteger {",它似乎工作正常.有什么缺点,如果有的话?
有些类型NSUInteger可以使用吗?
我有一个字符串,我转换为像这样的双:
double d = [string doubleValue];
Run Code Online (Sandbox Code Playgroud)
文档doubleValue告诉我们,在溢出时,此方法返回HUGE_VAL或-HUGE_VAL.这就是我之前检查过的方法:
if (d == HUGE_VAL || d == -HUGE_VAL)
//overflow
Run Code Online (Sandbox Code Playgroud)
现在,由于添加了新的"-Weverything"警告标志,编译器现在会抱怨
Comparing floating point with == or != is unsafe
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?如何应该我做这些比较?
关于比较两个"正常"浮点数(即不是"HUGE_VAL"),我也有同样的问题.例如,
double a, b;
//...
if (a != b) //this will now yield the same warning
//...
Run Code Online (Sandbox Code Playgroud)
该如何解决?
可能重复:
在C++中为什么有头文件和cpp文件?
由于两个相互矛盾的原因,我不太了解C++头文件:
我认为头文件的目的通常是分离接口和实现.换句话说,客户端使用头文件来学习如何使用该类,但不必担心类如何在内部实际实现此功能.
那么,为什么它是头文件中指定的C++类的私有变量?
在我看来,在头文件中使用私有变量违反了接口和实现的分离.直觉上,我认为私有变量在源文件中更有意义,因为这是不暴露给外部世界的文件.
也许我只是误解了头文件的目的,而且1.上面只是完全错误?以什么方式?
(初步说明:这里似乎有很多这个问题的变体,但它们似乎都集中在物理PHP文件本身的文件系统位置,而不是事物的Web URL位置,这就是我所追求的.)
简介1:
我有一个小的"网站",具有以下物理文件系统结构:
variable.php
folder
test.php
Run Code Online (Sandbox Code Playgroud)
(换句话说,variable.php在顶级和test.php文件夹中folder.)
这是文件内容:
<?php
//variable.php
$basePath = dirname($_SERVER['SCRIPT_NAME']);
?>
<?php
//test.php
include("../variables.php");
echo $basePath;
?>
Run Code Online (Sandbox Code Playgroud)
简介2:
在本地开发此"网站"时,它位于以下地址:
http://localhost/~noob/test-website
Run Code Online (Sandbox Code Playgroud)
题:
问题是,如果我放入http://localhost/~noob/test-website/folder/test.php浏览器,它会打印出来/~noob/test-website/folder/.
我希望它打印出来/~noob/test-website(variable.php的"web位置").换句话说,我想从所有文件中的全球访问,甚至那些在文件系统层次更深,对/~noob/test-website.我该如何做到这一点?
我显然不想对此路径进行硬编码.原因是当我将其上传到生产服务器时,位置会变得更加清晰http://example.com/(并且我不希望在上传到之后修改此硬编码路径)服务器,当然这个问题).
如何在Xcode 4.5.2中获取并使用10.6作为基础SDK?
我从Mac App Store下载了Xcode 4.5.2(通过Apple开发者网站上的链接).
有没有办法我可以单独下载10.6 SDK并开始使用它作为基础SDK?
奇怪的是,我可以通过Xcode的Preferences窗口下载10.6 SDK 的文档,但不能下载SDK本身.有任何想法吗?
我的网站上有类似的东西,让垃圾邮件收集者的事情变得更加困难。默认情况下,该网站显示“noob (at) me (dot) com”,但 JavaScript 会将此文本替换为实际的电子邮件地址。
<span id="email">noob (at) me (dot) com</span>
<script type="text/javascript" src="email.js"></script>
<script type="text/javascript">
document.getElementById('email').innerHTML = emailProducingFunction();
</script>
Run Code Online (Sandbox Code Playgroud)
这有效。但问题是,有时,在 JS 转换为真实电子邮件之前,原始文本会显示一瞬间,导致网站加载时出现短暂的“闪烁”效果。
有可能以某种方式避免这种情况吗?
一种“解决方案”是使用 CSS 隐藏电子邮件元素,然后使用 JS 使其取消隐藏。然而,这不是一个好的解决方案,因为该网站还应该兼容启用 CSS 但禁用 JS 的浏览器。
在我将新内容添加-Weverything到Clang后other warning flags,我开始收到所有NSAsserts的警告:
Varargs argument missing, but tolerated as an extension
Run Code Online (Sandbox Code Playgroud)
我该如何解决此问题,或者禁止此警告?
作为Objective-C编码器,我已经习惯了描述性的方法名称,如
[car insertFuelWithAmount:fuelAmount
type:fuelType
causesCarToSelfDestruct:NO];
Run Code Online (Sandbox Code Playgroud)
大多数程序员如何在C++中命名相应的方法?我有两个问题:
我的"C++ Primer"副本,第4版,提到(第46页),这gosh_this_is_an_impossibly_long_name_to_type是一个"非常糟糕的标识符名称".这与Objective-C中的心态不同,后者鼓励非常具有描述性的名称,即使它们很长.为什么C++程序员不喜欢长篇文章?
也许这不仅仅是盲目迁移,而是完全改变一个人的心态?如果是这样,需要做出哪些改变?
如果你不介意的话,请随意让自己的一些进一步的想法浮出水面.(我知道这不是一般性和模糊问题的论坛.因此,我试图在上面做一些更具体的事情.)
unsigned long long i = 1000;
Run Code Online (Sandbox Code Playgroud)
现在不0.1*i应该自动转换成双倍?当我传入0.1*i一个期望的函数参数时,为什么编译器没有警告我unsigned long long?我认为编译器应该警告这种潜在的精度损失.
我有我的编译器,Clang,配置"-Weverything"向我展示所有可能的警告.
假设我们有一个Objective-C 类或类NSArray的实例.这两个类都有这个方法.ShoeComputerage
Objective-C允许您在一个简单的声明中获得所有鞋子和计算机的年龄,如下所示:
NSArray *agesOfShoesAndComputers = [ourArray valueForKey:@"age"];
Run Code Online (Sandbox Code Playgroud)
C++是否有任何类似的方法可以应用于矢量,或者像C这样的东西在C++中总是有点麻烦?
这是我当前的异常处理代码.
请特别注意throw e;标有的线***.
try
{
//some code that could cause exception
}
catch (FaultException e) //first catch a particular type of exception only
{
if (Regex.IsMatch(e.Message, "something")) //satisfying a particular condition
{
Console.WriteLine("Particular exception occurred.");
return;
}
else
throw e; // <-- *** Problem! Not getting caught by the "catch" below.
}
catch (Exception e) //catch all other exceptions
{
Console.WriteLine("General exception ocurred");
return;
}
Run Code Online (Sandbox Code Playgroud)
问题是这样的:如果throw e; // <-- ***发生了,它就不会被决赛抓住catch.相反,应用程序只是崩溃,好像没有处理异常.
如何以最简单的方式解决这个问题?
您在第一个中 …