我很难理解角色约束在GCC内联汇编(x86)中的作用.我已经阅读了手册,它准确地解释了每个约束的作用.问题在于,即使我理解每个约束的作用,我也很少理解为什么要使用一个约束而不是另一个约束,或者含义可能是什么.
我意识到这是一个非常广泛的话题,所以一个小例子应该有助于缩小焦点.以下是一个简单的asm例程,它只添加了两个数字.如果发生整数溢出,则将值写入1输出C变量.
int32_t a = 10, b = 5;
int32_t c = 0; // overflow flag
__asm__
(
"addl %2,%3;" // Do a + b (the result goes into b)
"jno 0f;" // Jump ahead if an overflow occurred
"movl $1, %1;" // Copy 1 into c
"0:" // We're done.
:"=r"(b), "=m"(c) // Output list
:"r"(a), "0"(b) // Input list
);
Run Code Online (Sandbox Code Playgroud)
现在这个工作正常,除了我必须随意摆弄约束,直到我让它正常工作.最初,我使用了以下约束:
:"=r"(b), "=m"(c) // Output list
:"r"(a), "m"(b) // Input list
Run Code Online (Sandbox Code Playgroud)
请注意,我使用"m"约束而不是"0" b.这有一个奇怪的副作用,如果我用优化标志编译并调用该函数两次,由于某种原因,加法操作的结果也将被存储 …
我收到以下错误:
NameError (undefined local variable or method `acts_as_authentic' for #<Class:0x1037e6310>):
app/models/user.rb:2
app/controllers/user_controller.rb:3:in `new'
Run Code Online (Sandbox Code Playgroud)
我正在使用Rails 3.0.0,Ruby 1.8.7.Authlogic在我的Gemfile中如下:
gem 'authlogic', :git => "git://github.com/binarylogic/authlogic.git"
Run Code Online (Sandbox Code Playgroud)
我的User.rb文件的全部内容如下:
class User < ActiveRecord::Base
acts_as_authentic
end
Run Code Online (Sandbox Code Playgroud)
无论是通过'rails console'还是通过服务器,我都会得到同样的错误.我已经重启了服务器的次数超过了我的数量.请帮忙,我无法弄清楚.
我在这里找到了一个修复导入表的工具,但是如果没有在c/c ++中首先构建导入表的PE可执行文件怎么样?
我正在尝试按照以下说明为Python 2.6安装MySQLdb:
http://www.tutorialspoint.com/python/python_database_access.htm
当我到达这一步时:$ python setup.py build我收到错误:
users-MacBook-Pro:MySQL-python-1.2.3 user$ sudo python setup.py build
sh: mysql_config: command not found
Traceback (most recent call last):
File "setup.py", line 15, in
metadata, options = get_config()
File "/my_crawler/MySQL-python-1.2.3/setup_posix.py", line 43, in get_config
libs = mysql_config("libs_r")
File "/my_crawler/MySQL-python-1.2.3/setup_posix.py", line 24, in mysql_config
raise EnvironmentError("%s not found" % (mysql_config.path,))
EnvironmentError: mysql_config not found
我安装了MySQL并添加到我的 bash
我究竟做错了什么?
我现在正在研究并在网上寻求帮助后创建一个sha2登录表单,我发现下面这个链接的示例代码非常有用和实用(我希望我是对的!??),唯一我不明白的东西是程序员编写函数并从函数中获取salt值的方式.
http://hungred.com/useful-information/php-better-hashing-password/
define('SALT_LENGTH', 15);
function HashMe($phrase, &$salt = null)
{
$pepper = '!@#$%^&*()_+=-{}][;";/?<>.,';
if ($salt == '')
{
$salt = substr(hash('sha512',uniqid(rand(), true).$pepper.microtime()), 0, SALT_LENGTH);
}
else
{
$salt = substr($salt, 0, SALT_LENGTH);
}
return hash('sha512',$salt . $pepper . $phrase);
}
Run Code Online (Sandbox Code Playgroud)
如果我将功能更改为此有什么区别?
function HashMe($phrase, $salt) {..}
Run Code Online (Sandbox Code Playgroud)
当然这个功能会失败,在$ salt之前有一个'&'是什么?是否有必要像这样'null'&$ salt = null?如果我把'&$ salt'怎么办?
然后,为了获得salt值,你可以直接得到它并将它放在如下的sql查询中,
$username = cleanMe($_POST('username'));
$password = cleanMe($_POST('password'));
$salt = '';
$hashed_password = HashMe($password, $salt);
$sqlquery = 'INSERT INTO `usertable` ("username", "password", "salt") VALUES ("'.$username.'", "'.$hashed_password .'", "'.$salt.'") WHERE 1'; …Run Code Online (Sandbox Code Playgroud) 以下代码给出了编译错误.谁能告诉我为什么?
class mytype {
public:
int value;
mytype(int a) {
value = a;
}
friend ostream& operator<<(ostream& stream, const mytype& a) {
stream << a.value;//works
return stream;
}
friend ostringstream& operator<<(ostringstream& stream, const mytype& a) {
stream << (a.value);//compilation error
return stream;
}
};
Run Code Online (Sandbox Code Playgroud)
错误:
错误C2027:使用未定义类型'std :: basic_ostringstream <_Elem,_Traits,_Alloc>'
在确定:
错误C2666:'operator <<':18次重载具有类似的转换
最终修复:
将构造函数声明为显式.然后在MSVC上工作.
我想知道为什么.
至少在我的用法中,我有时删除我的CMake构建文件夹并创建一个新文件夹,或者有多个构建文件夹(每台计算机一个)但只有一个源文件夹(nfs mount).
据我所知,QT Creator将设置保存到源树中的CMakeLists.txt.user ,将其他一些设置保存到build文件夹中的'project.cbp'文件中.如果我从GUI设置设置,它们会在擦除/创建构建文件夹后丢失.很公平,但我想在创建新版本时使用脚本再次设置它们.
那么,我该怎么做:
a)让QT Creator在源树之外的某处写入CMakeLists.txt.user文件夹,以便保留机器特定的设置(例如在开发计算机上调试,在测试计算机上发布)?
b)从QT Creator项目读取/编写构建和运行设置,例如每个可执行文件的调试参数和额外的构建命令(例如-j8)?
然后我会在CMakeLists.txt中执行类似"execute_process(...)"的操作,为QT Creator项目设置一些调试和构建参数.
我有一个原生的Delphi TFrame模仿Roy Tanck的Cumulus Tag Cloud查看器,一个WordPress Flash插件.插件的作用是创建一个在"虚拟"球体表面旋转的三维球体.你可以在这里看到它:
http://www.roytanck.com/2008/03/06/wordpress-plugin-wp-cumulus-flash-based-tag-cloud/
在我的应用程序结构中,每个单词都有自己的TBitmap,并且渲染球体我将所有单词的位图打印到临时TBitmap,然后将BitBlt()临时TBitmap打印到可见TPaintBox的Canvas上.渲染操作发生在每50毫秒发生一次的TTimer定时器事件上.
然而,无论我怎么努力,对于单词的运动都有一个明显的"抖动",特别是与Flash播放器的柔滑平滑运动相比.我认为提高帧速率可能有所帮助,我甚至尝试使用多媒体定时器,由于MM定时器的多线程性质,所有画布的正确锁定和解锁每10毫秒更新一次.仍然紧张不安.我唯一可以想到的是,我所做的计算会导致每个字的离散像素位置被渲染,并导致抖动.相反,这是假设,也许Flash可能会抖动以促进"像素之间"渲染,或者可能实时消除锯齿,这就是为什么它不抖动?
在任何情况下,是否有可能使用本机Delphi代码获得我想要的丝般平滑运动?或者唯一的方法是直接使用Direct3D或OpenGL解决方案?如果这是一场失败的战斗,我不想浪费时间将这件事情调整为死亡.另一方面,如果你有任何提示,我很乐意听到它们.我的猜测是,如果我必须去Direct3D/OpenGL路线,这是一个很大的工作和学习曲线,所以如果我能找到一种方法来完成本机Delphi代码,我会喜欢它.
后续编辑:打印到更大的"虚拟"位图然后使用这里给出的重采样方法有助于将"向下"打印到实际可见的Canvas?: