在C#中,我能够使用下面的代码编译VB和C#代码,但我无法编译C/C++代码.有没有办法做到这一点?
C#编译器:
public void Compile(string ToCompile)
{
string Result = null;
string errors = null;
Microsoft.CSharp.CSharpCodeProvider codeProvider = new Microsoft.CSharp.CSharpCodeProvider();
System.CodeDom.Compiler.ICodeCompiler icc = codeProvider.CreateCompiler();
string Output = @"mypath";
System.CodeDom.Compiler.CompilerParameters parameters = new System.CodeDom.Compiler.CompilerParameters();
parameters.GenerateExecutable = true;
parameters.OutputAssembly = Output;
System.CodeDom.Compiler.CompilerResults results = icc.CompileAssemblyFromSource(parameters, ToCompile);
if (ReturnErrors == true)
{
if (results.Errors.Count > 0)
{
foreach (System.CodeDom.Compiler.CompilerError CompErr in results.Errors)
{
errors +=
"Line number " + CompErr.Line +
", Error Number: " + CompErr.ErrorNumber +
", '" + CompErr.ErrorText + …Run Code Online (Sandbox Code Playgroud) 在C/C++,正是两者的区别#define[和#ifndef #endif]来创造价值,当你可以很容易地用做int或std::string[C++]吗?
#ifndef MYVAL
#define MYVAL(500)
#endif
//C++
cout << MYVAL << endl;
//C
printf(MYVAL);
Run Code Online (Sandbox Code Playgroud)
//C++
int MYVAL = 500;
cout << MYVAL << endl;
//C
int MYVAL = 500;
printf(MYVAL);
Run Code Online (Sandbox Code Playgroud) 我知道,在C++中,您使用->或::代替.语言,如C#访问对象的值,例如button->Text或System::String^,但我不知道当我应该使用->或::,这是非常令人沮丧,因为它引起了我很多编译器错误.如果你能提供帮助,我将非常感激.谢谢 :)
在 C# 中,我试图查看用户是否按下了正确的键,以便玩家向右移动,但是当我尝试时,它没有注册按键:
private void KeyPressed(object sender, KeyPressEventArgs e)
{
if(e.KeyChar == Convert.ToChar(Keys.Right))
{
MessageBox.Show("Right Key");
}
}
Run Code Online (Sandbox Code Playgroud)
它不显示消息框
这也不适用于左/上/下
但是,如果我将其替换为
if(e.KeyChar == Convert.ToChar(Keys.Space))
Run Code Online (Sandbox Code Playgroud)
有用。
难道我做错了什么?
我在C/C++中看到过一些代码如下:
void Main(void)
Run Code Online (Sandbox Code Playgroud)
和
int Main(void)
Run Code Online (Sandbox Code Playgroud)
这是什么原因:为什么它不是一个参数,而是在void/int等名称之后的括号中使用?