小编Dra*_*sha的帖子

如果忽略返回值,如何提出警告?

我想看看我的代码(C++)中忽略函数返回值的所有位置.我怎么能用gcc或静态代码分析工具呢?

代码示例错误:

int f(int z) {
    return z + (z*2) + z/3 + z*z + 23;
}


int main()
{
  int i = 7;
  f(i); ///// <<----- here I disregard the return value

  return 1;
}
Run Code Online (Sandbox Code Playgroud)

请注意:

  • 它应该工作,即使函数及其使用在不同的文件中
  • 免费静态检查工具

c c++ gcc static-analysis

53
推荐指数
4
解决办法
1万
查看次数

我怎样才能估计std :: map的内存使用情况?

例如,我有一个已知sizeof(A)和sizeof(B)的std :: map,而map里面有N个条目.你会如何估计它的内存使用量?我会说它就像是

(sizeof(A) + sizeof(B)) * N * factor
Run Code Online (Sandbox Code Playgroud)

但是因素是什么?可能不同的公式?

也许要求上限更容易?

c++ memory stl stdmap

42
推荐指数
4
解决办法
3万
查看次数

什么是应用程序可以自行终止的最暴力方式(linux)

我想模仿暴力系统关闭,即尽可能接近应用程序级别的停电.我们在谈论Linux上的c/c ++应用程序.我需要应用程序来终止自己.

目前我看到几个选项:

  1. 呼叫退出()
  2. 调用_exit()
  3. 呼叫中止()
  4. 除零或取消引用NULL.
  5. 其他选择?

什么是最好的选择?

部分重复此问题

c c++ linux operating-system

11
推荐指数
6
解决办法
2360
查看次数

处理IO与haskell中的纯代码

我正在编写一个shell脚本(我在haskell中的第一个非示例),它应该列出一个目录,获取每个文件大小,执行一些字符串操作(纯代码),然后重命名一些文件.我不确定我做错了什么,所以有两个问题:

  1. 我应该如何在这样的程序中安排代码?
  2. 我有一个具体问题,我得到以下错误,我做错了什么?
error:
    Couldn't match expected type `[FilePath]'
           against inferred type `IO [FilePath]'
    In the second argument of `mapM', namely `fileNames'
    In a stmt of a 'do' expression:
        files <- (mapM getFileNameAndSize fileNames)
    In the expression:
        do { fileNames <- getDirectoryContents;
             files <- (mapM getFileNameAndSize fileNames);
             sortBy cmpFilesBySize files }
Run Code Online (Sandbox Code Playgroud)

码:

getFileNameAndSize fname = do (fname,  (withFile fname ReadMode hFileSize))

getFilesWithSizes = do
  fileNames <- getDirectoryContents
  files <- (mapM getFileNameAndSize fileNames)
  sortBy cmpFilesBySize files
Run Code Online (Sandbox Code Playgroud)

io haskell

10
推荐指数
2
解决办法
1310
查看次数

在java*中将值放入映射中,而不存在*更新现有值(如果存在)

我想做以下功能:

if (!map.contains(key)) {
  map.put(key, val);
}
Run Code Online (Sandbox Code Playgroud)

更新:让我们假设不是HashMap这样的地图被实现为某种树.

但请注意,它有点低效,因为如果我们进入实际上我们实际搜索地图两次.我其实喜欢这样做:

map.put_if_new_key(key, val);
Run Code Online (Sandbox Code Playgroud)

知道怎么用Java做到这一点?

java collections dictionary

9
推荐指数
2
解决办法
2万
查看次数

使用"系统调用"而不是直接调用函数的原因是什么?

系统调用,它允许在Linux的间接系统调用.使用它的原因是什么 - 为什么它比直接调用函数更好?

c linux operating-system

8
推荐指数
1
解决办法
897
查看次数

关于if-then-else缩进的haskell中的奇怪错误

我有以下代码:

foo :: Int -> [String] -> [(FilePath, Integer)] -> IO Int
foo _ [] _ = return 4
foo _ _ [] = return 5
foo n nameREs pretendentFilesWithSizes = do
  result <- (bar n (head nameREs) pretendentFilesWithSizes)
  if result == 0
  then return 0 --  <========================================== here is the error
  else foo n (tail nameREs) pretendentFilesWithSizes
Run Code Online (Sandbox Code Playgroud)

我在上面的评论的行上得到一个错误,错误是:

aaa.hs:56:2:
    parse error (possibly incorrect indentation)
Run Code Online (Sandbox Code Playgroud)

我正在使用emacs,没有空格,我不明白我做错了什么.

haskell functional-programming indentation

7
推荐指数
2
解决办法
723
查看次数

确定Haskell中是否存在文件列表

我是新手,monads让我完全糊涂了.给定一个文件名列表,我想知道是否所有文件都存在.

一般来说,我想做:

import System.Directory
allFilesPresent files = foldr (&&) True (map doesFileExist files)
Run Code Online (Sandbox Code Playgroud)

但是我不知道这样做的正确方法是什么,因为这里IO Bool没有Bool涉及到.

帮助和解释会非常好,谢谢!

monads haskell

5
推荐指数
3
解决办法
3351
查看次数

在比赛安全后是pwrite吗?

在Linux上,pwrite操作(寻找+写入)是原子的,这意味着在具有一个文件描述符的多个线程中执行pwrite-s是安全的.我想使用dup()创建文件描述符副本.现在,拥有fd1和fd2 - 将pwrite-s按预期工作,还是存在竞争条件的危险?

c c++ linux multithreading file

2
推荐指数
1
解决办法
379
查看次数