grep on Makefile [дублировать]

Другим сценарием является то, что вы нанесли нулевой объект в тип значения . Например, код ниже:

object o = null;
DateTime d = (DateTime)o;

Он выкинет NullReferenceException в роли. В приведенном выше примере это кажется совершенно очевидным, но это может произойти в более «поздних связующих» сложных сценариях, где нулевой объект был возвращен из некоторого кода, которого вы не являетесь, и приведение, например, генерируется некоторой автоматической системой.

Одним из примеров этого является этот простой фрагмент привязки ASP.NET с элементом управления календарем:

" />

Здесь SelectedDate на самом деле является свойством - типа DateTime - типа Calendar Web Control, и привязка может отлично вернуть что-то null. Неявный генератор ASP.NET создаст кусок кода, который будет эквивалентен приведенному выше методу. И это поднимет NullReferenceException, что довольно сложно определить, потому что он лежит в сгенерированном ASP.NET коде, который компилирует отлично ...

63
задан Jonas Byström 4 March 2010 в 22:14
поделиться

2 ответа

Это знак доллара, в make-файлах вам нужно будет ввести $$, чтобы получить один знак доллара:

M_ARCH := $(shell g++ -dumpmachine | awk '{split($$1,a,"-");print a[1]}')
126
ответ дан Martin 3 September 2018 в 13:53
поделиться
  • 1
    Да, make - это полная трата денег: вы должны поставить два $, чтобы получить их. – P Shved 4 March 2010 в 22:31
  • 2
    @PavelShved Я ни разу не платил за make. :) – Trevor Hickey 31 October 2012 в 04:29

Делать это довольно lispy, когда вы приступите к нему. Вот не-awk-версия, которая делает то же самое:

space := $() #

M_ARCH := $(firstword $(subst -,$(space),$(shell g++ -dumpmachine)))

all:
    $(info $(M_ARCH))
14
ответ дан richq 3 September 2018 в 13:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: