C# compile errors in unsafe code

生来就可爱ヽ(ⅴ<●) 提交于 2021-02-11 15:51:01

问题


Compiling a VS 2010 c# project (.NET 4.0, any CPU, allow unsafe code = checked) we are getting a variety of compile errors as below:

  1. Operator '*' cannot be applied to operands of type 'System.IntPtr' and 'int'

  2. Constant value '325486741' cannot be converted to a 'int' (use 'unchecked' syntax to override)

  3. Cannot convert type 'string' to 'char*'

  4. Cannot implicitly convert type 'long' to 'byte*'. An explicit conversion exists (are you missing a cast?)

  5. Invalid expression term 'ref'

All these are occurring in 'unsafe' methods.

How to resolve these ?


回答1:


We'd need to see your code, but I'd say that the "unsafe" part is irrelevant to the errors, since those seem to be problems with casting and such.

Here's some info that might help:

  1. Operator '*' cannot be applied to operands of type 'System.IntPtr' and 'int'

Try casting to an int or long first.

  1. Constant value '325486741' cannot be converted to a 'int' (use 'unchecked' syntax to override)

Try using unchecked((int)variable).

  1. Cannot convert type 'string' to 'char*'

Try using:

 fixed (char* pChar = my_string) { ... }
  1. Cannot implicitly convert type 'long' to 'byte*'. An explicit conversion exists (are you missing a cast?)

Try casting: byte* pB = (byte*)value;

  1. Invalid expression term 'ref'

I can't say much about this one without the code.



来源:https://stackoverflow.com/questions/4447782/c-sharp-compile-errors-in-unsafe-code

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!