我已经写了一点C,我可以很好地阅读它以大致了解它在做什么,但每次我遇到一个宏它都完全抛弃了我.我最终必须记住宏是什么,并在我阅读时将其替换为我的脑袋.我遇到的那些直观且易于理解的东西总是像迷你小功能一样,所以我总是想知道为什么它们不仅仅是功能.
我可以理解在预处理器中为调试或跨平台构建定义不同构建类型的需要,但是定义任意替换的能力似乎只对使得已经很难理解的语言更加难以理解.
为什么为C引入了如此复杂的预处理器?并且有没有人有一个使用它的例子,这将使我理解为什么它似乎仍然用于除了简单的#debug风格条件编译之外的目的?
编辑:
读了很多答案之后我还是不明白.最常见的答案是内联代码.如果内联关键字没有这样做,那么它有充分的理由不这样做,或者实现需要修复.我不明白为什么需要一个完全不同的机制,这意味着"真正内联这个代码"(除了形成内联之前编写的代码).我也不明白提到"如果它太愚蠢而不能被赋予功能"的想法.当然,任何需要输入并产生输出的代码都最好放在一个函数中.我想我可能没有得到它,因为我不习惯编写C的微观优化,但预处理器只是对一些简单问题的复杂解决方案.
for (int z = 0; z < alParmValues.Count; z++)
{
//string[] def;
string[] asd = alParmValues[z].ToString().Split(',');//this is of type string.collections and u cant cast it to a arraylist or array
//if (HUTT.clsParameterValues.bCustomObj == false)
string[] def = alMethSign[z].ToString().Substring(alMethSign[z].ToString().IndexOf('(') + 1, alMethSign[z].ToString().IndexOf(')') - (alMethSign[z].ToString().IndexOf('(') + 1)).Split(',');
}
Run Code Online (Sandbox Code Playgroud)
我必须访问循环外的两个字符串数组.有更好的解决方案吗?我不能使用ArrayList或将它们声明为public,那么我该如何访问它们呢?
嗯,我有一个黑色和白色的应用程序,我需要一个降低亮度的功能,我该怎么办?所有白色都来自保存在ResourceDictionary(Application.xaml)中的SolidColorBrush,我当前的解决方案是放置一个空窗口,它上面有80%的不透明度,但这不允许我使用底层窗口..
我将一个布尔值传递给我的.net mvc操作页面中的javascript函数.
问题是,它输出值True,javascript显然只接受'true'(小写).
我不想破解变量并将其变为字符串并在我的操作中将其转换为小写,但看起来我没有选择?
我正在尝试编写一些捕获特定异常的代码,并为调用堆栈处理更高级别的内容抛出更有用的代码,同时捕获更多常规异常并处理它们.
代码是这样的:
try
{
// Do stuff
}
catch (SomeException e)
{
throw new SomeExceptionWithContextInfo();
}
catch (Exception e)
{
// Handle unexpected exception gracefully
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是一般的例外是捕获我的新异常.有没有办法避免这种情况?
我当前的解决方案涉及检查异常的类型,如果它的类型是我刚刚创建的类型,则再次抛出它.
LinkedHashMap是具有可预测迭代顺序的类似Hashtable的数据结构(Python中的dict)的Java实现.这意味着在遍历所有键的过程中,它们是通过插入来排序的.这是通过维护插入顺序的附加链表来完成的.
是否有与Python相同的东西?
如何在.NET中交换左右鼠标按钮(最好是C#)?基本上结果应该与用户通过控制面板选中鼠标属性中的"切换主按钮和辅助按钮"复选框相同.我正在处理Windows XP,以防万一.
有没有办法检查服务器上的C#代码是否在Firefox中安装了闪存?例如,当客户端浏览器是IE时,您可以检查
Request.Headers ["accept"].包含("application/x-shockwave-flash")
但Firefox请求不包含相同的标头.
我被告知我不应该params[:user_id]在我的视图文件中使用变量.相同的规则是否适用于session变量?
如果没有,那我该怎么办?首先将它分配给实例变量,然后在视图中使用它?这似乎很烦人,因为我必须为我的每一个动作做这件事.我想我可以把这个重复的代码放在一个方法中,该方法被该类中的所有其他操作调用.
c# ×3
.net ×1
arrays ×1
asp.net-mvc ×1
audio ×1
brightness ×1
c ×1
flash ×1
java ×1
javascript ×1
javasound ×1
loops ×1
macros ×1
mouse ×1
python ×1
server-side ×1
user32 ×1
variables ×1
view ×1
wpf ×1