由于java implementation(OpenJDK)和Android的虚拟机DalvikVM都是开源的,因此必须能够在Google的DalvikVM上实现Sun的JavaVM.这样就可以Clojure, Jython在android上运行基于JVM的应用程序和开箱即用的语言().
是否正在不断努力生成Sun JVM的这种实现?
我一直对葡萄酒感到惊讶.有时我想破解它,修复一些小东西并且通常理解它是如何工作的.所以,我下载了Wine源代码,之后我感到不堪重负.代码库是巨大的 - 与Linux内核不同 - 几乎没有关于代码的指南.
理解如此庞大的代码库的最佳实践是什么?
我一直在用C++测试内联函数调用.
Thread model: win32
gcc version 4.3.3 (4.3.3-tdm-1 mingw32)
Run Code Online (Sandbox Code Playgroud)
C++编程语言中的Stroustrup:
内联说明符是编译器的一个提示,它应该尝试生成代码内联,而不是为函数设置一次代码,然后通过通常的函数调用机制调用.
但是,我发现生成的代码根本不是内联的.有一个CALL为instrction 国际广场的功能.
替代文字http://i42.tinypic.com/8ys3f4.jpg
为什么会这样?那我怎么能使用内联函数呢?
编辑:使用的命令行选项:
**** Build of configuration Debug for project InlineCpp ****
**** Internal Builder is used for build ****
g++ -O0 -g3 -Wall -c -fmessage-length=0 -osrc\InlineCpp.o ..\src\InlineCpp.cpp
g++ -oInlineCpp.exe src\InlineCpp.o
Run Code Online (Sandbox Code Playgroud) 在Python中,我可以这样做:
>>> import random
>>> ints = [1,2,3]
>>> random.choice(ints)
3
Run Code Online (Sandbox Code Playgroud)
在C#中,我做的第一件事是:
var randgen = new Random();
var ints = new int[] { 1, 2, 3 };
ints[randgen.Next(ints.Length)];
Run Code Online (Sandbox Code Playgroud)
但这需要索引,也需要复制ints困扰我.所以,我想出了这个:
var randgen = new Random();
var ints = new int[] { 1, 2, 3 };
ints.OrderBy(x=> randgen.Next()).First();
Run Code Online (Sandbox Code Playgroud)
仍然不是很好,很有效率.是否有更优雅的方式从IEnumberable获取随机值?
我是一名C++初学者,如果问题太基础,那就很抱歉.
我试图收集字符串constrcturs并尝试所有它们(记住它们).
string strA(); // string(); empty string // incorrect
string strB("Hello"); // string( const char* str)
string strC("Hello",3); // string( const char* str, size_type length)
string strD(2,'c'); // string( size_type lenght, const char &c)
string strE(strB); // string( const string& s)
cout << strA << endl;
cout << strB << endl;
cout << strC << endl;
cout << strD << endl;
cout << strE << endl;
Run Code Online (Sandbox Code Playgroud)
除strA外,所有这些都有效.它打印"1".为什么?在这种情况下,strA的类型是什么?当我不确定时,如何检查东西的类型?
我注意到这是正确的方法(顺便说一句,这似乎与其他构造函数不一致,有时候parens有时没有parens):
string strA;
Run Code Online (Sandbox Code Playgroud)
ps:大胆的问题,通常不相关的答案将被低估.
我被建议在GCC中使用以下选项,因为它有助于避免许多常见错误.它会打开一堆警告并将-Werror其变成错误.
gcc -pedantic -W -Wall -Wextra -Wshadow -Wstrict-overflow=5 -Wwrite-strings -std=c99 -Werror
Run Code Online (Sandbox Code Playgroud)
鉴于以下测试代码:
#include <stdio.h>
int main(void)
{
int arr[8]={0,10,20,30,40,50,60,70};
int x;
printf("sizeof(arr): %d\n", sizeof(arr));
printf("sizeof(int): %d\n", sizeof(int));
for(x = 0; x < sizeof(arr)/sizeof(int); x++)
{
printf("%d\n",arr[x]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我明白了:
test.c:11: error: comparison between signed and unsigned
Run Code Online (Sandbox Code Playgroud)
我知道我能解决这个问题的一种方法就是关闭警告,但是他们还没有让我使用这些设置来最终关闭它们.
另一种方法是投射东西,但我被告知铸造已被弃用.
另外,我可以将x变为unsigned int:
unsigned x;
Run Code Online (Sandbox Code Playgroud)
但是,当我必须使用这些编译器选项将带符号值与无符号值进行比较时,它无法解决一般问题.是否有更清洁的方式而不是铸造?
test.c:
int main()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我没有使用任何标志(我是gcc的新手),只是命令:
gcc test.c
Run Code Online (Sandbox Code Playgroud)
我在win32上使用了最新的GDM TDM版本.生成的可执行文件几乎是23KB,对于空程序来说太大了.
如何减小可执行文件的大小?
当我想在我的课外制作一个只读的值类型时,我这样做:
public class myClassInt
{
private int m_i;
public int i {
get { return m_i; }
}
public myClassInt(int i)
{
m_i = i;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以做些什么来List<T>在我的课堂之外创建一个readonly类型(所以他们不能在其中添加/删除元素)?现在我只是宣布公开:
public class myClassList
{
public List<int> li;
public myClassList()
{
li = new List<int>();
li.Add(1);
li.Add(2);
li.Add(3);
}
}
Run Code Online (Sandbox Code Playgroud) 这个typedef:
typedef DWORD WINAPI
(* CM_Open_DevNode_Key)(DWORD, DWORD, DWORD, DWORD, PHKEY, DWORD);
Run Code Online (Sandbox Code Playgroud)
在BorlandCpp中编译很好,但是,当我在msvc中编译它时我必须删除WINAPI(这只是一个别名__stdcall):
typedef DWORD
(* CM_Open_DevNode_Key)(DWORD, DWORD, DWORD, DWORD, PHKEY, DWORD);
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我可以安全地删除WINAPI部分吗?
更新:我必须从typedef中删除"WINAPI",否则我得到了
error C2059: syntax error : '('
Run Code Online (Sandbox Code Playgroud)
为线.
你能告诉我为什么Borland可以用"WINAPI"编译它而Msvc不能吗?
在不同的汇编语言中,MUL(x86)/ MULT(mips)指的是乘法.这是程序员的黑盒子.我感兴趣的是,无论架构如何,CPU实际上如何实现乘法.假设我的寄存器中有两个16位值,而且我是cpu,所以我必须使用其他的bit-fiddling指令实现MUL(和,或者,xor,not,shl,shr等).我该怎么办?