以下代码在GCC上编译时没有警告,但在Visual Studio 2005中发出警告.
const void * x = 0;
char * const * p = x;
Run Code Online (Sandbox Code Playgroud)
x指向未知类型的常量对象,p指向char的常量指针.为什么p的赋值会导致警告?
同样,这是C,而不是C++.谢谢.
我正在用PHP编写一个构造,其中解析器确定动态调用哪个函数,类似这样:
// The definition of what to call
$function_call_spec = array( "prototype" => "myFunction",
"parameters" => array( "first_par" => "Hello",
"second_par" => "World"));
// Dispatch
$funcPrototype = $function_call_spec["prototype"];
$funcPrototype(); // Here we call function 'myFunction'.
Run Code Online (Sandbox Code Playgroud)
这一切都很好,花花公子.但现在是下一步,传递参数,我不知道是否有可能按照我想要的方式进行.它永远不会让我惊讶,但是这些天脚本语言可以做什么,所以这里是:
可以将参数传递给函数,如下所示:
// Here we call function 'myFunction' with the array of parameters.
$funcPrototype( $function_call_spec["parameters"] );
Run Code Online (Sandbox Code Playgroud)
但是,我想用明确的参数等正确地声明'myFunction':
function myFunction( $first_par, $second_par )
{
}
Run Code Online (Sandbox Code Playgroud)
接下来的问题是 - 有没有办法通过循环参数数组动态地将参数传递给函数?
为了澄清,我并不想这样做,是这样的:
$funcPrototype( $function_call_spec["parameters"]["first_par"],
$function_call_spec["parameters"]["second_par"] );
Run Code Online (Sandbox Code Playgroud)
因为这需要我的代码静态地知道关于myFunction的细节,这违背了整个想法.
相反,我想以某种方式这样做:
// Special magic PHP function which can be used …Run Code Online (Sandbox Code Playgroud) 这个问题已在关于UI的更具体层面上的类似帖子中得到解决.
我想在更一般的设计层面上讨论这个问题.
我每天都在设计上做出决定,以确保高品质.但是我时不时地与中层管理人员和没有经验的开发人员讨论"以正确的方式"做事的好处.
有时候我只是说"相信我,我已经看到了这种情况,我们正在以另一种方式做到这一点",有时候我会尝试制定一个特定的选择会引入问题等的情况.大部分时间我觉得我没有联系到我正在与之交谈的人.我不妨说"相信我".
我觉得我作为高级软件人员的能力之一应该是解释和激励我们作为一家公司所做的技术选择.我可以在经济和用户体验方面做到这一点.
但我似乎无法在技术和伪技术层面上解释为什么某些设计选择"感觉不对"以及为什么其他人感觉更正确和有益,即使最初它可能更难实现或看起来不必要的复杂.
幸运的是,我偶尔会表现出良好的效果,否则我可能会开始怀疑好的和坏的设计的整个概念.
我真的觉得有趣的是要了解其他人对此有何看法.
提前致谢!
当我读到这个问题时,我记得有人告诉过我(多年前),从装配者的角度来看,这两个操作是非常不同的:
n = 0;
n = n - n;
Run Code Online (Sandbox Code Playgroud)
这是真的,如果是的话,为什么会这样呢?
编辑:正如一些回复所指出的,我想这对于编译器优化到同一个东西来说相当容易.但我觉得有趣的是,如果编译器采用完全通用的方法,它们会有所不同.
注意:我不小心发布了这个问题而没有指定我正在使用哪个STL实现,我觉得它无法真正更新,因为它会使大多数答案过时.
所以,正确的问题是 - 假设我使用的是Microsoft Visual C++的STL库,在下面的代码中使用了哪种排序算法?:
list<int> mylist;
// ..insert a million values
mylist.sort();
Run Code Online (Sandbox Code Playgroud) 这个问题重复一遍.投票结束.
在Windows命令行考虑这个.
scriptA.py | scriptB.py
Run Code Online (Sandbox Code Playgroud)
在scriptA.py中:
sys.stdout.write( "hello" )
Run Code Online (Sandbox Code Playgroud)
在scriptB.py中:
print sys.stdin.read()
Run Code Online (Sandbox Code Playgroud)
这会生成以下错误:
c:\> scriptA.py | scriptB.py
close failed: [Errno 22] Invalid argument
Traceback (most recent call last):
File "c:\scriptB.py", line 20, in <module>
print sys.stdin.read()
IOError: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud)
"关闭失败"消息似乎来自scriptA.py的执行.
如果我使用sys.stdin.read(),sys.stdin.read(1),sys.stdin.readlines()等等并不重要.
怎么了?
这个问题重复一遍.投票结束.
似乎我被禁止从主线程之外的另一个线程访问(即更新)我的列表视图控件.
如何执行某些线程任务,然后以某种方式发出信号以启动listview的更新?