如何从C中的.h文件中读取常量# 我想读取C++中的常量,这些常数是在C++文件中定义的。有人能告诉我如何用C#来完成这个吗?C++文件看起来像: #define MYSTRING1 "6.9.24 (32 bit)" #define MYSTRING2 "6.8.24 (32 bit)"

如何从C中的.h文件中读取常量# 我想读取C++中的常量,这些常数是在C++文件中定义的。有人能告诉我如何用C#来完成这个吗?C++文件看起来像: #define MYSTRING1 "6.9.24 (32 bit)" #define MYSTRING2 "6.8.24 (32 bit)",c#,c++,C#,C++,我想用C#?读这篇文章,你有两个选择: 1——创建一个C++包装器代码,这些宏包括这些宏,将此代码导出到LIB或DLL,并使用它从C 2-从代码中读取/解析.h文件,并在运行时获取值。下面是一个非常简单的答案,您可以在.h文件的每一行使用它来提取字符串值 string GetConstVal(string line) { string[] lineParts = string.Split(line, ' '); if (lineParts[0] == "#define") {

我想用C#?

读这篇文章,你有两个选择:

1——创建一个C++包装器代码,这些宏包括这些宏,将此代码导出到LIB或DLL,并使用它从C


2-从代码中读取/解析.h文件,并在运行时获取值。

下面是一个非常简单的答案,您可以在.h文件的每一行使用它来提取字符串值

string GetConstVal(string line)
{
  string[] lineParts = string.Split(line, ' ');
  if (lineParts[0] == "#define")
  {
    return lineParts[2];
  }
  return null;
}
所以无论何时它返回null,都没有常数。现在请记住,它只获取常量的值,而不是名称,但是您可以轻松地修改代码,通过out参数等返回该值


如果你想代表其他数据类型,比如整数等,你就必须考虑一些聪明的东西,因为C++中的宏并不真正算作类型安全。

你需要在流读取器中打开文件并读取每一行。可能的副本:不,我不想逐行读取它。我想在我的C#变量中获取.h文件中定义的所有常量。将.h文件转换为具有公共静态属性(如
MYSTRING1
)的C#类的代码可以吗?或者你能具体说明你想如何使用它吗?最好有一些代码样本。还有,所有常量都是字符串吗?在我的.h文件中。。。这里有常数,我想读一个具体的。我想使用一些包装器类,可以为我做到这一点,但不知道如何做到:)。我的想法是,包装类可以与非托管代码交互,但可以获得所有细节。请告诉我这个包装类的目的是什么,我如何使用它以及它的功能?我对这个解决方案很感兴趣。@AsadIqbal-您似乎没有做第一个选项做第二个选项所需的知识。我阅读了可以随时更改的常量,表示有名称等。。。我只想得到一些特定的常数。。。在您建议的解决方案中,如果常量名称发生更改,那么如何获得它?列出的代码根本不考虑名称。另外,如果您正在寻找一个特定的常量,并且它的名称发生了变化,那么您将无能为力。无论人类改变常数的名称,也必须改变他们所寻找的东西。