小编Tim*_*Tim的帖子

指定OpenMP到GCC

对于OpenMP,当我的代码使用其API中的函数(例如,omp_get_thread_num())而不使用其指令(例如#pragma omp ...)时,

  1. 为什么直接将libgomp.a指定为gcc而不是使用-fopenmp不起作用,例如

    gcc hello.c /usr/lib/gcc/i686-linux-gnu/4.4/libgomp.a  -o hello
    
    Run Code Online (Sandbox Code Playgroud)

    更新:我刚刚发现链接到libgomp.a不起作用,但链接到libgomp.so工作.这是否意味着OpenMP不能静态链接?

  2. 为什么-fopenmp只能在不指定库文件的情况下工作

    gcc hello.c -fopenmp -o hello
    
    Run Code Online (Sandbox Code Playgroud)

    更新:换句话说,当使用-fopenmp时,为什么不需要显式链接到libgomp.so?

  3. 为什么这也编译:

    gcc hello.c -L/usr/lib/gcc/i686-linux-gnu/4.4/ -lgomp -o hello
    
    Run Code Online (Sandbox Code Playgroud)

    如果有的话,这会忽略代码中的OpenMP指令吗?

感谢致敬!

c gcc openmp

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

关于C++中名称修改的问题

我正在尝试学习和理解C++中的名称修改.以下是一些问题:

(1)来自devx

当全局函数被重载时,为每个重载版本生成的受损名称是唯一的.名称修改也适用于变量.因此,局部变量和具有相同用户给定名称的全局变量仍然会获得明显的错位名称.

除了重载函数和同名全局变量和局部变量之外,还有其他使用名称修改的示例吗?

(2)来自维基

需要出现这样的情况:语言允许使用相同的标识符命名不同的实体,只要它们占用不同的命名空间(其中命名空间通常由模块,类或显式命名空间指令定义).

我不明白为什么名字改编仅适用于该情况下,当识别属于不同的命名空间,因为重载函数可以在同一个命名空间和相同名称的全局和局部变量,也可以在相同的空间.怎么理解这个?

具有相同名称但在不同范围内的变量是否也使用名称修改?

(3)C有名称错误吗?如果没有,当一些全局和局部变量具有相同名称时,它如何处理?C没有重载功能,对吧?

感谢致敬!

c c++ linker compilation name-mangling

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

MongoDB语法错误:缺失; 在声明@(shell)之前

当我尝试调用集合的方法时,为什么会出现错误SyntaxError: missing ; before statement @(shell)?谢谢.

$ mongo
MongoDB shell version: 3.2.8
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2016-08-04T11:58:21.138-0400 I CONTROL  [initandlisten] 
2016-08-04T11:58:21.138-0400 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-08-04T11:58:21.138-0400 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-08-04T11:58:21.138-0400 I CONTROL  [initandlisten] 
2016-08-04T11:58:21.139-0400 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. …
Run Code Online (Sandbox Code Playgroud)

mongodb

23
推荐指数
3
解决办法
7万
查看次数

了解外部函数接口(FFI)和语言绑定

混合使用不同的编程语言一直是我不太了解的事情.根据这篇维基百科的文章,外部函数接口(或FFI)可以通过以下几种方式完成:

  1. 要求以特定方式指定或实现要作为主机语言可调用的客户语言函数; 经常使用某种兼容性库.
  2. 使用工具使用适当的粘合代码自动"包装"客户语言函数,该代码执行任何必要的转换.
  3. 使用包装器库
  4. 限制可以跨语言使用的主机语言功能集.例如,从C调用的C++函数可能(通常)不包括引用参数或抛出异常.

我的问题:

  1. 第一,第二和第三种方式有什么区别?在我看来,他们都是将被调用语言的代码编译成具有目标文件和头文件的库,然后由调用语言调用它们.
  2. 它链接的一个来源说,实现FFI可以通过以下几种方式完成:

    • 要求目标语言中的被调用函数实现特定协议.
    • 实现一个包含给定低语言函数的包装器库,并用代码"包装"它以与高级语言约定进行数据转换.
    • 要求声明为native的函数使用高级功能的子集(与低级语言兼容).

    我想知道链接源中的第一种方式是否与维基百科中的第一种方式相同?

    这个来源的第三种方式意味着什么?它与维基百科的第四种方式相对应吗?

  3. 同一个来源中,当比较它列出的三种方式时,似乎说填补两种语言之间差距的工作逐渐从被调用语言转移到调用语言.我想知道如何理解这一点?对于维基百科中的四种方式,这种转变也是如此吗?
  4. 语言绑定和FFI等价概念?他们是如何相关和不同的?

    从编程语言到库或OS服务的绑定是以该语言提供该服务的API.

  5. 我想知道维基百科的引文中的哪一种方式或以下每个例子所属的来源?

谢谢你的启示!最好的祝福!

language-agnostic binding programming-languages ffi

22
推荐指数
1
解决办法
5125
查看次数

Makefile四个美元符号

我正在阅读GNU Make的文档.这是一个例子

%.d:%.c

    @set -e; rm -f $@; \

     $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \

     sed ’s,\($*\)\.o[ :]*,\1.o $@ : ,g’ < $@.$$$$ > $@; \

     rm -f $@.$$$$
Run Code Online (Sandbox Code Playgroud)

我在C++程序上尝试了这个,并得到了文件列表

init3d.d init3d.d.18449 input.d input.d.18444 main.d main.d.18439

这是我发现但在同一文档中不明白的内容

如果您已启用二级扩展并且您希望在先决条件列表中使用文字美元符号,则必须实际写入四个美元符号('$$$$').

我想知道四个美元符号"$$$$"究竟是什么意思?他们如何18449,18444或18439?

感谢致敬!

makefile expansion dollar-sign

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

指令集和汇编语言是一样的吗?

我想知道指令集汇编语言是否相同?

如果没有,他们如何区别以及他们的关系是什么?

感谢致敬!

assembly instruction-set

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

线组的图例

我喜欢在同一个情节中绘制两组线.每组有两条颜色相同的线,我必须按照一组又一组的顺序绘制它们.我尝试只显示组的图例而不是线条.我怎样才能做到这一点?这是我错误代码的简化:

plot(x1, y1, color1); hold on;
plot(x2, y2, color1); hold on;

plot(x3, y3, color2); hold on;
plot(x4, y4, color2); hold on;

legend({color1, color2})
Run Code Online (Sandbox Code Playgroud)

谢谢!


更新:

一个新的问题,是否有任何方法可以在每一行之后编写图例并且不覆盖之前的图例但附加到它上面?即类似于"坚持"但适用于传奇的东西.

matlab plot

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

如何找出从哪个模块导入名称?

在Python程序中,如果程序的命名空间中存在名称,是否可以查明是否从某个模块导入了名称,如果是,则从哪个模块导入?

python debugging namespaces module python-3.x

20
推荐指数
4
解决办法
1240
查看次数

Bibtex的资本

我想在参考书目中显示一些字母作为资本.例如:

@misc{libsvm,  
abstract = {LIBSVM is an implbmentation of Support vector machine (SVM).},  
author = {Chang, Chih-Chung},  
howpublished = {\url{http://www.csie.ntu.edu.tw/~cjlin/libsvm/}},  
keywords = {svm},  
posted-at = {2010-04-08 00:05:04},  
priority = {2},  
title = {LIBSVM.},  
url = "http://www.csie.ntu.edu.tw/~cjlin/libsvm/",  
year = {2008}  
}  
Run Code Online (Sandbox Code Playgroud)

但"LIBSVM"未显示为:

[3] Chih-Chung Chang.LIBSVM.http://www.csie.ntu.edu.tw/ cjlin/libsvm /,2008.

我怎样才能把这些字母变成大写?感谢致敬!

latex bibtex

19
推荐指数
1
解决办法
3万
查看次数

编程语言之间的关系

我想知道以下问题:

  1. 它是什么意思" 某些语言是另一种语言的子集/超集 "?可以用数学来定义吗?它与基本集理论中的子集/超集概念有关吗?
  2. 几乎所有现有语言都是用少量低级语言实现/编写的吗?例如,大多数语言是用C语言编写的吗?C++是用C语言编写的吗?

    实现关系和语言子集/超集的概念之间是否存在某种关系?

  3. 在语言功能方面,某些语言比其他语言更多.在某些情况下,有些功能具有其他功能,例如,C++是否具有C的所有功能?

    根据特征集和语言之间的子集/超集关系,子集/超集关系之间是否存在某种关系?

  4. 是否存在表征语言之间关系的其他方面?

感谢致敬!

language-agnostic

18
推荐指数
2
解决办法
5629
查看次数