Что бы вы ни указали после -D, оно будет определено перед обработкой входных файлов.Тем не менее, он не удаляет определения, которые встречаются в файле.Таким образом, если вы пишете -DDEBUG_OUTPUT
, но в файле есть #define DEBUG_OUTPUT
, последнее является переопределением первого.Чтобы справиться с этим случаем, вы можете написать в файле:
//if not specified earlier (e.g. by -D parameter)
#ifndef DEBUG_OUTPUT
//set it now to some default value
#define DEBUG_OUTPUT 0
#endif
Обратите внимание, что на самом деле это не имеет никакого отношения к nvcc.Такое же поведение появляется в C / C ++.