?-6ren"> ?-我在 .cpp 文件中发现了以下代码。我不理解涉及头文件的构造或语法。我确实认识到这些特定的头文件与 Android NDK 相关。但是,我认为这个问题是关于 C++ 语法的一般问题。这些在某种程度上-6ren">
gpt4 book ai didi

c++ - 这是什么 C++ 语言构造 : # (i. e。哈希)整数 "path_to_header_or_cpp_file"<整数>?

转载 作者:IT老高 更新时间:2023-10-28 22:03:33 26 4
gpt4 key购买 nike

我在 .cpp 文件中发现了以下代码。我不理解涉及头文件的构造或语法。我确实认识到这些特定的头文件与 Android NDK 相关。但是,我认为这个问题是关于 C++ 语法的一般问题。这些在某种程度上似乎是预处理器命令,因为它们以“#”开头。但是,它们不是典型的#include、#pragma、#ifndef、#define 等命令。源文件有 1000 多个此类引用,引用了数百个不同的 .h、.c、.cpp 文件。

typedef int __time_t;
typedef int __timer_t;
# 116 "/home/usr/download/android-ndk-r8b/platforms/android-3/arch-arm/usr/include/machine/_types.h"
# 41 "/home/usr/download/android-ndk-r8b/platforms/android-3/arch-arm/usr/include/sys/_types.h" 2
# 33 "/home/usr/download/android-ndk-r8b/platforms/android-3/arch-arm/usr/include/stdint.h" 2
# 48 "/home/usr/download/android-ndk-r8b/platforms/android-3/arch-arm/usr/include/stdint.h"
typedef __int8_t int8_t;
typedef __uint8_t uint8_t;

编译器 (GCC) 似乎没有抛出与这些行相关的任何错误。但是,我想了解它们的目的和功能。谁能解释一下这些?

最佳答案

这是 GCC 预处理器的输出。这些行被称为 linemarkers .它们的语法如下:

# linenum filename flags

它们被解释为以下行来自 filenamelinenum 行。它们基本上只是帮助您和编译器查看包含的行的位置。这些标志提供了更多信息:

  • 1 - This indicates the start of a new file.
  • 2 - This indicates returning to a file (after having included another file).
  • 3 - This indicates that the following text comes from a system header file, so certain warnings should be suppressed.
  • 4 - This indicates that the following text should be treated as being wrapped in an implicit extern "C" block.

如果您将 -E 标志提供给 g++,您可以通过预处理您自己的程序看到此输出。

关于c++ - 这是什么 C++ 语言构造 : # (i. e。哈希)整数 "path_to_header_or_cpp_file"<整数>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20805986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com