Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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
gcc不负责汇编文件中的预处理器吗?_Gcc_Assembly_C Preprocessor_Eclipse Cdt - Fatal编程技术网

gcc不负责汇编文件中的预处理器吗?

gcc不负责汇编文件中的预处理器吗?,gcc,assembly,c-preprocessor,eclipse-cdt,Gcc,Assembly,C Preprocessor,Eclipse Cdt,我发现,CDT使用相应的后端工具,如x86_64-w64-mingw32-as在eclipse上编译默认的汇编文件,该文件在C/C++Build>Settings>tool Settings>GCC Assembler上配置 ################################################################################ # Automatically-generated file. Do not edit! ###########

我发现,
CDT
使用相应的后端工具,如
x86_64-w64-mingw32-as
在eclipse上编译默认的汇编文件,该文件在
C/C++Build>Settings>tool Settings>GCC Assembler
上配置

################################################################################
# Automatically-generated file. Do not edit!
################################################################################

# Each subdirectory must supply rules for building sources it contributes
src/%.o: ../src/%.c
    @echo 'Building file: $<'
    @echo 'Invoking: Cygwin C Compiler'
    x86_64-w64-mingw32-gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
    @echo 'Finished building: $<'
    @echo ' '

src/%.o: ../src/%.cpp
    @echo 'Building file: $<'
    @echo 'Invoking: Cygwin C++ Compiler'
    x86_64-w64-mingw32-g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
    @echo 'Finished building: $<'
    @echo ' '

src/%.o: ../src/%.S
    @echo 'Building file: $<'
    @echo 'Invoking: GCC Assembler'
    x86_64-w64-mingw32-as  -o "$@" "$<"
    @echo 'Finished building: $<'
    @echo ' '
== 因此,是gcc负责预处理器(gcc工作程序的一个步骤),对吗? 根据这种想法,以下(.S)将起作用

/* https://sourceforge.net/p/predef/wiki/Architectures */
/* #ifdef __LP64__ || _LP64 */
#if defined(__i386__) || defined(_M_IX86)
# include "nomakefile/foo_x86.S"
#elif defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64)
# include "nomakefile/foo_x64.S"
#else
# error Unsupported architecture
#endif
同样

  • 是的。
    gcc
    二进制文件决定调用什么程序。如果它看到一个后缀为
    s
    的文件,它会将
    作为
    调用。如果它看到一个后缀为
    S
    的文件,它将调用
    cpp
    ,然后将
    作为
    。汇编程序本身不知道后缀约定,也不会为您调用C预处理器。

    是。
    gcc
    二进制文件决定调用什么程序。如果它看到一个后缀为
    s
    的文件,它会将
    作为
    调用。如果它看到一个后缀为
    S
    的文件,它将调用
    cpp
    ,然后将
    作为
    。汇编程序
    as
    本身不知道后缀约定,也不会为您调用C预处理器。

    如果您试图编写一个自我回答的Q&a,请确保该问题是一个正确的问题,不会包含太多答案。多个答案应该是可能的,来自其他人。回答我自己的问题很有趣,所以我忍不住去尝试。因此,它被标记为'-1'。是的,这是无用的,我知道我错了~我的观点与你的答案错了没有任何关系。问题的关键是,你在问题中所写的很多文字都应该在答案中。一个带有假设的巨大问题只有一个肯定/否定的答案。像“gcc如何决定运行什么”这样的小问题可以有一个真正的答案。事实上,我发现C预处理器在我的
    .S
    文件中不起作用,然后我就猜到了,现在我从到得到了答案。如果你试图写一个自我回答的Q&A,请确保这个问题是一个正确的问题,不会包含太多答案。多个答案应该是可能的,来自其他人。回答我自己的问题很有趣,所以我忍不住去尝试。因此,它被标记为'-1'。是的,这是无用的,我知道我错了~我的观点与你的答案错了没有任何关系。问题的关键是,你在问题中所写的很多文字都应该在答案中。一个带有假设的巨大问题只有一个肯定/否定的答案。像“gcc如何决定运行什么”这样的小问题可以有一个真正的答案。事实上,我发现C预处理器在我的
    .S
    文件中不起作用,然后我就猜到了,现在我从到得到了它
    /* https://sourceforge.net/p/predef/wiki/Architectures */
    /* #ifdef __LP64__ || _LP64 */
    #if defined(__i386__) || defined(_M_IX86)
    # include "nomakefile/foo_x86.S"
    #elif defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64)
    # include "nomakefile/foo_x64.S"
    #else
    # error Unsupported architecture
    #endif