小编mah*_*ood的帖子

在运行时再次“未定义的符号”,C++

我有一个数据类型,我可以实例化该类型的变量。像这样:

FetchAddr faddr(VirtualMemoryAddress( 0x0a ));
Run Code Online (Sandbox Code Playgroud)

FetchAdr 的定义是:

struct FetchAddr {
   VirtualMemoryAddress theAddress;
   FetchAddr(VirtualMemoryAddress anAddress)
     : theAddress(anAddress)
   { } 
};
Run Code Online (Sandbox Code Playgroud)

现在我有一个类 faddr 是一个私有(或公共)变量

class FLEXUS_COMPONENT(BPred)  {
   static FetchAddr faddr;
   public:
     FLEXUS_COMPONENT_CONSTRUCTOR(BPred)
        : base( FLEXUS_PASS_CONSTRUCTOR_ARGS )
     {
        faddr = VirtualMemoryAddress( 0x0a );
     }
   ...
}
Run Code Online (Sandbox Code Playgroud)

假设宏定义正确。

代码编译和链接没有任何问题。但是,当我启动程序时,它说:

 "undefined symbol: _ZN6nBPred14BPredComponent8faddr"
Run Code Online (Sandbox Code Playgroud)

它说 faddr 没有符号。

有什么想法吗?

c++ runtime undefined-symbol

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

在枚举和按位操作

也许这个问题很简单......

有一个枚举定义:

enum uop_flags_enum {
  FICOMP        = 0x001,  
  FLCOMP        = 0x002,  
  FFCOMP        = 0x004, 
  FMEM          = 0x008, 
  FLOAD         = 0x010, 
  FSTORE        = 0x020, 
  FCTRL         = 0x040, 
  FCALL         = 0x080,  
  FRET          = 0x100, 
  FCOND         = 0x200  
};
Run Code Online (Sandbox Code Playgroud)

代码中的某处有:

if (uop->flags & FCTRL)
Run Code Online (Sandbox Code Playgroud)

当这个条件成立时,它不是吗?

c c++ enumeration bit-manipulation

6
推荐指数
2
解决办法
6980
查看次数

将从mercurial更新覆盖我的更改?

我使用hg命令从存储库(mercurial存储库)更新项目.

hg pull
hg update
Run Code Online (Sandbox Code Playgroud)

问题是,从我上次更新,我为自己修改了一些文件.现在关注的是从存储库更新将覆盖我的更改.我怎么能防止这种情况?

mercurial

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

固定大小unordered_map,如何定义?

是否可以定义固定大小unordered_map

查看成员函数,没有resize()类似的std::vectorstd::list.此外,谷歌没有帮助我.

c++ unordered-map fixed-size-types

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

VHDL 算术 shift_left

使用 的shift_left功能ieee.numeric_std,我想将信号向左移动并插入10从右侧插入。

signal qo: signed (3 downto 0) := (others=>'0');
qo <= shift_left(qo,1);
Run Code Online (Sandbox Code Playgroud)

那只会0从右边插入。我想1在某些条件下插入。

vhdl

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

当变量达到特定值时设置断点

无论如何在变量达到GDB中的特定值时设置断点?例如,变量取以下值:1 4 8 10 3 2 9 13 11并且我想在此变量达到9时设置断点.

gdb

5
推荐指数
1
解决办法
3495
查看次数

特定文件中的递归SED

我想在以"tor*"开头的所有文件中用"128"更改每个模式"evictions".我用

find . -name "tor*" -exec sed "s/evictions/128/g" '{}' \;
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

recursion design-patterns sed

5
推荐指数
1
解决办法
4324
查看次数

bash编程中是否有写缓冲区?

在bash编程中是否有任何写入文件缓冲区?如果有,可以改变它的大小.

这是问题所在

我有一个bash脚本,它逐行读取文件,然后操作读取数据,然后将结果写入另一个文件.像这样的东西

while read line 
  some grep, but and sed
  echo and append to another file
Run Code Online (Sandbox Code Playgroud)

输入数据非常庞大(近20GB的文本文件).进度很慢所以出现一个问题,如果bash的默认行为是将结果写入每个读取行的输出文件中,那么进度将很慢.

所以我想知道,是否有任何机制来缓冲某些输出然后将该块写入文件?我在互联网上搜索了这个问题,但没有找到任何有用的信息......

是操作系统相关的问题还是bash?操作系统是centos版本6.

脚本是

#!/bin/bash
BENCH=$1
grep "CPU  0" $BENCH > `pwd`/$BENCH.cpu0
grep -oP '(?<=<[vp]:0x)[0-9a-z]+' `pwd`/$BENCH.cpu0 | sed 'N;s/\n/ /' |  tr '[:lower:]' '[:upper:]' > `pwd`/$BENCH.cpu0.data.VP
echo "grep done"
while read line ; do
   w1=`echo $line | cut -d ' ' -f1`
   w11=`echo "ibase=16; $w1" | bc`
   w2=`echo $line | cut -d ' ' -f2`
   w22=`echo "ibase=16; $w2" | bc`
   echo $w11 $w22 …
Run Code Online (Sandbox Code Playgroud)

bash operating-system

5
推荐指数
2
解决办法
3874
查看次数

在std :: map中打印迭代器的索引

我使用find()的方法std::map,它返回一个迭代器.
但是我需要找到元素的索引 ; 例如:0,对应于std::map::begin(),依此类推.

#include <map>
#include <utility>
#include <iostream>

int main()
{
  std::map< int, int > aMap;
  aMap.insert( std::make_pair(100, 50) );
  aMap.insert( std::make_pair(200, 40) );
  aMap.insert( std::make_pair(300, 60) );

  std::map< int, int >::iterator it_map = aMap.find(300);
  if (it_map != aMap.end())
    std::cout << it_map << "\n"; // error

}
Run Code Online (Sandbox Code Playgroud)

这不编译,我知道原因.但是,我需要一种打印方式,2因为300的索引是2.

对于这个简单的例子,你可能会说map(二叉树)不是一个好容器.但是,在实际代码中,我必须搜索大量元素,二叉树对此有好处.

任何的想法?

c++ iterator map

5
推荐指数
2
解决办法
924
查看次数

编辑netbeans自动生成的代码

使用 Netbeans,我创建了一个 GUI 表单并添加了一个JList组件。为了添加项目,我ListModel根据许多网站创建了一个。

DefaultListModel<String> model = new DefaultListModel<>();
JList<String> list = new JList<>( model );
Run Code Online (Sandbox Code Playgroud)

问题是第二行是由 Netbeans 自动生成的,并且不可编辑!所以,我明白了

private javax.swing.JList<String> list;
...
list = new javax.swing.JList<>();
Run Code Online (Sandbox Code Playgroud)

那么我怎样才能将该行更改为JList<>( model )呢?我不得不说,在生成的代码中,我看到

 list.setModel(new javax.swing.AbstractListModel<String>() {
        String[] strings = { "String" };
        public int getSize() { return strings.length; }
        public String getElementAt(int i) { return strings[i]; }
    });
Run Code Online (Sandbox Code Playgroud)

我不知道如何使用它。我看到一些与我的类似的问题,但我不清楚问题到底是什么以及为什么我无法按预期以正常方式添加/删除项目!

java netbeans-8

5
推荐指数
1
解决办法
1710
查看次数