小编Pau*_*han的帖子

在Lisp中,使用require时避免"无法打开加载文件"

我正在开发一个自定义的.emacs文件,我可以在几台不同的计算机上使用它.我希望能够加载一个模式,如果它存在于系统上.如果它不存在,我希望Emacs停止显示错误:File error: Cannot open load file, X.

例如:

(require 'darkroom-mode)
Run Code Online (Sandbox Code Playgroud)

结果是:

File error: Cannot open load file, darkroom-mode
Run Code Online (Sandbox Code Playgroud)

file-exists-p用来测试是否存在某些其他文件但是对于这个测试我会假设我需要搜索我的加载路径.我是Lisp的新手,所以这让我很难过.

lisp emacs elisp dot-emacs

17
推荐指数
1
解决办法
3964
查看次数

是Foo*f =新的Foo好的C++代码

通过我以前的旧C++期刊阅读,我发现了一些东西.

其中一篇文章断言

Foo *f = new Foo();

几乎是不可接受的专业C++代码,并且自动内存管理解决方案是合适的.

是这样吗?

编辑:改述:一般来说,直接内存管理对于新的C++代码是不可接受的吗?auto_ptr(或其他管理包装器)应该用于大多数新代码吗?

c++ memory-leaks memory-management

16
推荐指数
5
解决办法
2061
查看次数

Unicode - 通常在C++中使用它

假设我们有一个任意的字符串,s.

s具有来自世界任何地方的财产.来自美国,日本,韩国,俄罗斯,中国和希腊人民都写入小号不时.幸运的是,我们没有时间旅行者使用线性A.

为了便于讨论,让我们假设我们想要进行字符串操作,例如:

  • 相反
  • 长度
  • 利用
  • 小写
  • 索引到

并且,仅仅因为这是为了讨论,我们假设我们想要自己编写这些例程(而不是抓住一个库),而且我们没有可以维护的遗留软件.

Unicode有3个标准:utf-8,utf-16和utf-32,每个都有利弊.但是,让我说我有点愚蠢,我想要一个Unicode来统治它们(因为为3种不同类型的字符串编码滚动动态适应库,隐藏与API用户的差异听起来很难).

  • 哪种编码最通用?
  • wchar_t支持哪种编码?
  • STL支持哪种编码?
  • 这些编码是否全部(或根本没有)以空值终止?

-

这个问题的关键是要为自己和其他人提供有用和有用的Unicode信息:阅读RFC很好,但是有一堆与RFC不包含的编译器,语言和操作系统有关的信息,但是知道在真实的应用程序中实际使用Unicode是至关重要的.

c++ unicode

16
推荐指数
2
解决办法
1161
查看次数

使用PRAGMA作为SQLite中的源来获取列名

问题:

我想做这个操作

select name from pragma table_info(my_awesome_table)

但是,它会产生语法错误.我有偷偷摸摸的怀疑这是可能的,但似乎没有记录在使用sqlite 的SELECT文档中可用.

sqlite metadata

13
推荐指数
1
解决办法
5044
查看次数

请批评我的Lisp

我创造了一个很好的小例程:

(defun unzip (seq)
  "Takes an even-length list and breaks it apart by evens/odd index"
  (let ((oddresult '())
    (evenresult '()))
    (loop for n from 0 to (- (length seq) 1) do
      (if (oddp n)
          (push (nth n seq) oddresult)
        (push (nth n seq) evenresult)))
    (list (reverse oddresult) (reverse evenresult))))
Run Code Online (Sandbox Code Playgroud)

并使用它:

CL-USER> (unzip '(1 2 3 4 5 6))
((2 4 6) (1 3 5))
Run Code Online (Sandbox Code Playgroud)

但是,我敏锐地意识到我能用任何语言编写 botch C++,并希望对我unzip的Common Lisp风格进行一些分析.

lisp common-lisp

13
推荐指数
3
解决办法
1008
查看次数

寻找16位x86编译器

我正在研究一个嵌入式系统项目,并遇到了编译器的问题,该编译器以编程方式嵌入到Paradigm C++ IDE中.我希望能够自动化建设.

处理器是AMD186ES.我没有使用操作系统 - 只是裸机的东西.我需要从C++生成实模式16位8086机器代码.

我的谷歌搜索表明G ++可以构建这样的代码.

我的问题是:

可以配置g ++来构建这个机器代码吗?

还有其他C++编译器可以做到吗?

c++ compiler-construction embedded x86-16

12
推荐指数
6
解决办法
1万
查看次数

如何为Perl创建静态分析调用图?

我正在开发一个中等复杂的Perl程序.作为其开发的一部分,它必须经过修改和测试.由于某些环境限制,经常运行此程序不是一个易于操作的选项.

我想要的是Perl的静态调用图生成器.它不必涵盖每个边缘情况(例如,在eval中将变量重新定义为函数或反之亦然).

(是的,我知道有一个运行时调用图生成工具与Devel :: DprofPP,但运行时不能保证调用每个函数.我需要能够查看每个函数.)

perl static-analysis call-graph

12
推荐指数
2
解决办法
3872
查看次数

当我在Perl的匹配运算符中插入变量时,如何转义元字符?

假设我有一个包含我想要匹配的行的文件:

foo
quux
bar
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我有另一个数组:

foo
baz
quux
Run Code Online (Sandbox Code Playgroud)

假设我们遍历文件,调用每个元素$word,以及我们正在检查的内部列表,@arr.

if( grep {$_ =~ m/^$word$/i} @arr)
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但在某种可能的情况下,我们fo.在文件中有一个测试用例,它.在正则表达式中作为通配符操作符运行,fo.然后匹配foo,这是不可接受的.

这当然是因为Perl正在将变量插入到正则表达式中.

问题:

如何强制Perl按字面意思使用变量?

regex variables perl interpolation

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

父类中的受保护数据在子类中不可用?

我很困惑:我认为受保护的数据是由C++中给定类的子进程读/写的.

以下代码段无法在MS Compiler中编译

class A
{
protected:
  int data;
};

class B : public A
{
  public:

  B(A &a)
  {
    data = a.data;
  }
};

int main()
{
  A a;
  B b = a;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误信息:

Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

demoFail.cpp
demoFail.cpp(12) : error C2248: 'A::data' : cannot access protected member declared in class 'A'
        demoFail.cpp(4) : see declaration of 'A::data'
        demoFail.cpp(2) : see declaration …
Run Code Online (Sandbox Code Playgroud)

c++ protected

11
推荐指数
1
解决办法
4737
查看次数

在Common Lisp中转置列表

我试图转置列表清单; 我的评论表明了思考过程.

(setq thingie  '((1 2 3) (4 5 6) (7 8 9)))  ;;test case

(defun trans (mat)
  (if (car mat)
    (let ((top (mapcar 'car  mat))   ;;slice the first row off as a list
          (bottom (mapcar 'cdr mat))) ;;take the rest of the rows
      (cons top (trans bottom))))    ;;cons the first-row-list with the next-row-list
   mat)

(trans thingie)
=> ((1 2 3) (4 5 6) (7 8 9))           ;;wait what? 
Run Code Online (Sandbox Code Playgroud)

但是,我真的希望它成为

((1 4 7) (2 5 8) (3 6 9))
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

lisp common-lisp

11
推荐指数
1
解决办法
3161
查看次数