Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法通过从另一个文件读取值来为宏赋值? 我正在研究C++项目。我有一个名为“version”的文件,其中只有类似12343的数字以数字形式定义[实际上是版本]。 此“版本”文件在库A中定义。 不知何故,我需要将此值指定给另一个库B文件中的宏_C++_C - Fatal编程技术网

有没有办法通过从另一个文件读取值来为宏赋值? 我正在研究C++项目。我有一个名为“version”的文件,其中只有类似12343的数字以数字形式定义[实际上是版本]。 此“版本”文件在库A中定义。 不知何故,我需要将此值指定给另一个库B文件中的宏

有没有办法通过从另一个文件读取值来为宏赋值? 我正在研究C++项目。我有一个名为“version”的文件,其中只有类似12343的数字以数字形式定义[实际上是版本]。 此“版本”文件在库A中定义。 不知何故,我需要将此值指定给另一个库B文件中的宏,c++,c,C++,C,有什么办法吗 因为工作是官方的,所以我不能在这里共享代码。 < P> C和C++都没有语言特性,允许你将宏的扩展文本设置为从外部文件编译时读取的内容。这些任务通常分配给构建系统 为此目的有多种机制,但它们遵循以下一般程序: 外部程序读取包含所需文本的文件 那个节目也是 格式化传递定义的编译选项的文本(例如-DVERSION=${what_I_read_from_the_file}),或 写入包含宏定义本身的头文件,例如 #define VERSION version-text-from-th

有什么办法吗


因为工作是官方的,所以我不能在这里共享代码。

< P> C和C++都没有语言特性,允许你将宏的扩展文本设置为从外部文件编译时读取的内容。这些任务通常分配给构建系统

为此目的有多种机制,但它们遵循以下一般程序:

  • 外部程序读取包含所需文本的文件

  • 那个节目也是

    • 格式化传递定义的编译选项的文本(例如
      -DVERSION=${what_I_read_from_the_file}
      ),或

    • 写入包含宏定义本身的头文件,例如

      #define VERSION version-text-from-the-file
      
  • 无论哪种方式,获得的信息都会以适当的方式提供给构建—编译器选项替代方案通过确保在构建时将所选选项传递给编译器来进行,而头替代方案则取决于需要宏
    #包含生成头的文件


C和C++都没有语言特性,允许你将宏的扩展文本设置为从外部文件编译时读取的内容。这些任务通常分配给构建系统

为此目的有多种机制,但它们遵循以下一般程序:

  • 外部程序读取包含所需文本的文件

  • 那个节目也是

    • 格式化传递定义的编译选项的文本(例如
      -DVERSION=${what_I_read_from_the_file}
      ),或

    • 写入包含宏定义本身的头文件,例如

      #define VERSION version-text-from-the-file
      
  • 无论哪种方式,获得的信息都会以适当的方式提供给构建—编译器选项替代方案通过确保在构建时将所选选项传递给编译器来进行,而头替代方案则取决于需要宏
    #包含生成头的文件


图书馆A采取什么形式?如果它是一个已编译的blob,那么在编译时从中提取任何有用的东西将是相当棘手的。作为构建系统的一部分,预处理/代码生成步骤可能会更好。因此,名为“version”的文件是一个只包含一行的文本文件,例如
12343
?请回答你的问题,并说明清楚这似乎是重复的:今天问(可能是同一个用户)@VTT这不太一样,这里他想把一行文件的内容放入
#define
(至少我理解是这样的)在你提到的问题中,他想给一个全局变量赋值。@MichaelWalz:是的,文件名是“version”,它包含一个像你提到的版本号。现在,我只需要在预处理期间将此值指定给宏。这将使我能够根据宏的值使用一些编译器保护。“库A”采用什么形式?如果它是一个已编译的blob,那么在编译时从中提取任何有用的东西将是相当棘手的。作为构建系统的一部分,预处理/代码生成步骤可能会更好。因此,名为“version”的文件是一个只包含一行的文本文件,例如
12343
?请回答你的问题,并说明清楚这似乎是重复的:今天问(可能是同一个用户)@VTT这不太一样,这里他想把一行文件的内容放入
#define
(至少我理解是这样的)在你提到的问题中,他想给一个全局变量赋值。@MichaelWalz:是的,文件名是“version”,它包含一个像你提到的版本号。现在,我只需要在预处理期间将此值指定给宏。这将使我能够根据宏的值使用一些编译器保护。对于前者,不需要(新的)外部程序——您可以在命令行上使用
-DVERSION=$(cat版本)
,让shell为您进行扩展……对于前者,不需要(新的)外部程序——您可以在命令行上使用
-DVERSION=$(cat版本)
,让shell为您进行扩展。。。