阅读misc.与SDL开发相关的教程我发现了两个不同的例子,做了同样的事情,但是以不同的方式.从代码"安全性"和可维护性的角度来看,我想知道你认为哪两个是正确的.
在第一个例子中,程序员根本没有使用断言,但代码看起来还不错(至少在我看来):
int main(){
SDL_Surface *screen;
/** Initialize SDL */
if(SDL_Init(SDL_INIT_VIDEO)!=0){
fprintf(stderr,"Unable to initialize SDL: %s",SDL_GetError());
}
atexit(SDL_Quit);
/** Sets video mode */
screen=SDL_SetVideoMode(640,480,16,SDL_HWSURFACE);
if(screen==NULL){
fprintf(stderr,"Unable to set video mode: %s",SDL_GetError());
}
return (0);
}
Run Code Online (Sandbox Code Playgroud)
在第二个例子中,程序员[其他]正在使用不同的方法,例如(代码不完全是复制粘贴):
int main(){
SDL_Surface* screen;
/** Initialize SDL */
assert(SDL_Init(SDL_INIT_VIDEO)==0);
atexit(SDL_Quit);
/** Sets video mode */
screen=SDL_SetVideoMode(640,480,16,SDL_HWSURFACE);
assert(screen!=NULL);
return (0);
}
Run Code Online (Sandbox Code Playgroud)
是否可以在if条件(从第一个示例)中"替换"与第二个示例中的断言一样?
什么是正确的策略(如果有的话)?
您好我想用Java编写自己的桌面共享应用程序.
该应用程序应具有一些非常默认的功能:
捕捉画面;
允许远程连接用户单击/编辑字段.
我正在考虑使用Java Robot类进行鼠标移动/按键操作.问题是我不知道使用什么屏幕捕获策略.
我应该每秒顺序进行屏幕捕获(在主机计算机上),并通过网络发送带有UDP的捕获,以便客户端可以拦截数据克数吗?这对网络来说有点过分了吗?
还有哪些其他策略?(除了尝试已经存在的应用程序).
PS:如果有必要,我甚至可以使用JNI编写本机代码(这仍然是我计划做的最后一件事).
后来的编辑:经过一番调查后,我得出了@ThorbjørnRavnAndersen的结论.Java可能不是这种应用程序的最佳选择.我可以尝试使用JNI,但该代码将覆盖我项目的75%以上.
我会尝试寻找其他替代方案.
我想广泛测试一些 C 代码的内存泄漏。
在我的机器上,我有 4 Gb 的 RAM,因此动态内存分配不太可能失败。如果内存分配失败,我仍然想看看代码的解释,看看恢复机制是否足够“强大”。
你有什么建议?如何模拟内存规格较低的环境?我如何模拟我的测试?
编辑:我希望我的测试独立于代码。我只能“访问”我正在测试的库中不同函数的返回值。我不应该在我正在测试的代码中编写“测试逻辑”。
为什么Wrapper类(如Integer,Double等)没有内部原始值的setter是什么原因?
我问这个是因为这种功能会简化微积分,并使Java语言更灵活一些.
让我举几个例子.
1)我们来看下面的例子:
Integer x = new Integer(5);
x++;
Run Code Online (Sandbox Code Playgroud)
幕后的前一个代码是执行自动装箱.就像是:
int x_tmp = x.intValue();
x_tmp++;
x = new Integer(x_tmp); // Yes that's a new memory allocation
Run Code Online (Sandbox Code Playgroud)
由于这个问题,在Wrapper上执行微积分比在普通原始类型上执行要慢.使用setter,可以更容易地增加内部值,而无需在堆上分配另一个对象.
2)另一个困扰我的问题是,在Java中编写交换函数是不可能的,就像我在C(使用指针)或C++(指针或引用)中所做的那样.
如果我写,void swap(Integer x, Integer y)我无法访问内部值因为,并且我将无法交换值.
PS:我的一个朋友建议我应该考虑更大的图景,并考虑并发性和类型不变性.
所以你有解释吗?谢谢!
是否可以编写一个返回printf格式的宏(使用标记串联)?例如
#define STR_FMT(x) ...code-here...
Run Code Online (Sandbox Code Playgroud)
STR_FMT(10) 扩展到 "%10s"
STR_FMT(15) 扩展到 "%15s"
...等
这样我就可以在printf中使用这个宏了:
printf(STR_FMT(10), "*");
Run Code Online (Sandbox Code Playgroud) 鉴于99 Haskell问题的练习14 :
(*)复制列表的元素.
例如.:
*Main> dupli''' [1..10]
[1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10]
Run Code Online (Sandbox Code Playgroud)
我已经实施了4个解决方案:
{-- my first attempt --}
dupli :: [a] -> [a]
dupli [] = []
dupli (x:xs) = replicate 2 x ++ dupli xs
{-- using concatMap and replicate --}
dupli' :: [a] -> [a]
dupli' xs = concatMap (replicate 2) xs
{-- usign foldl --}
dupli'' :: [a] -> [a]
dupli'' xs = foldl (\acc x -> acc ++ [x,x]) [] xs
{-- using foldl 2 --}
dupli''' …Run Code Online (Sandbox Code Playgroud) 我目睹了关于这个话题的辩论,我想知道你的意见?从程序员的角度来看,我们可以将神经网络视为更高级的“数据结构”吗?
神经网络实际上不仅仅是一种数据结构吗?
我想在Netbeans项目浏览器中忽略.pyc文件.
我想我找到了一种方法:TOOLS - > MISCELLANEOUS - > FILES.
这是一个名为的部分:IDE忽略的文件.
那里的字段正在等待描述文件模式的正则表达式.该字段的默认值为:
^(CVS|SCCS|vssver.?\.scc|#.*#|%.*%|_svn)$|~$|^\.(?!htaccess$).*$
Run Code Online (Sandbox Code Playgroud)
如何修改此表达式以(另外)忽略.pyc文件?
我有一个Haskell Map,包含字符串作为键,一些lambda函数作为项.例如.:
-- List of supported Operators -> mapping with functions
ops = Map.fromList [("+", \x y -> x + y),
("-", \x y -> y - x),
("*", \x y -> x * y),
("/", \x y -> y / x)]
Run Code Online (Sandbox Code Playgroud)
我想编写一个输入的函数:
基于运算符和ops映射,函数将评估和/减/等.这两个数字.
我尝试过类似的东西:
(Map.lookup "+" a) 1 2
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
错误是:
Top level:
No instance for (Show (Integer -> Integer))
arising from use of `print' at Top level
Probable fix: add an instance declaration for …Run Code Online (Sandbox Code Playgroud) 我在Haskell中为问题10 (99个问题)编写了以下解决方案:
{-- using dropWhile and takeWhile --}
enc :: (Eq a) => [a] -> [(Int, a)]
enc [] = []
enc (x:xs) = (length $ takeWhile (==x) (x:xs), x) : enc (dropWhile (==x) xs)
Run Code Online (Sandbox Code Playgroud)
我想重写相同的解决方案,但这次使用let语法.
{-- using dropWhile and takeWhile / more readable --}
enc' :: (Eq a) => [a] -> [(Int, a)]
enc' [] = []
enc' (x:xs) = let num = length $ takeWhile (==x) (x:xs)
rem = dropWhile (==x) (x:xs)
in (num, x) …Run Code Online (Sandbox Code Playgroud)