The short answer is no:
的#define
指令不能被用作 聲明常數值C和C通常完成++。 C#中的常量最好定義爲 類或結構的靜態成員。如果您有幾個這樣的常量,請考慮創建一個單獨的「常量」類來保存它們的 。
你可以做這樣的事情:
constants.cs:
#if __STDC__
#define public
#else
namespace foo
{
class Constants {
#endif
public const int VAR_1 = 0x2000;
#if __STDC__
#undef public
#else
}
}
#endif
的main.c:
#include <stdio.h>
#include "constants.cs"
int main(void)
{
printf("%d\n", VAR_1);
return 0;
}
的Program.cs:
using System;
namespace foo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Constants.VAR_1);
}
}
}
這導致:
$ gcc -Wall -Wpedantic main.c && ./a.out
8192
$ dotnet run
8192
這是使用const int
,而不是#define
在C,但可能是你願意做一個權衡。
來源
2017-09-13 22:33:40
Tim
C和C#程序可能在運行時加載偏移量嗎?如果是這樣,請將其放入配置文件並在運行時加載它。 –
查看msdn:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/preprocessor-directives/preprocessor-if – jdweng
使用C++/CLI很容易,而不是使用C#。除了一個配置文件之外,你可以考慮在一個衆所周知的位置(如0)的視圖的開始位置在MMF中寫入這些偏移量。有點共享內存:) –